Ryo Ogata
/
ultra_sonic_test
ping))))))))
ping.cpp@0:b33b91b2061f, 2013-07-11 (annotated)
- Committer:
- OGA
- Date:
- Thu Jul 11 10:46:18 2013 +0000
- Revision:
- 0:b33b91b2061f
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
OGA | 0:b33b91b2061f | 1 | #include "mbed.h" |
OGA | 0:b33b91b2061f | 2 | #include "ping.h" |
OGA | 0:b33b91b2061f | 3 | |
OGA | 0:b33b91b2061f | 4 | //DigitalOut myled = LED1; |
OGA | 0:b33b91b2061f | 5 | |
OGA | 0:b33b91b2061f | 6 | extern Timer timer2; |
OGA | 0:b33b91b2061f | 7 | |
OGA | 0:b33b91b2061f | 8 | uint16_t ultrasonicVal[ALL_ULTRASONIC]; |
OGA | 0:b33b91b2061f | 9 | double ultrasonicValue[ALL_ULTRASONIC] = {0}; |
OGA | 0:b33b91b2061f | 10 | |
OGA | 0:b33b91b2061f | 11 | |
OGA | 0:b33b91b2061f | 12 | void Ultrasonic() |
OGA | 0:b33b91b2061f | 13 | { |
OGA | 0:b33b91b2061f | 14 | for(int i = 0 ; i < ALL_ULTRASONIC; i++){ |
OGA | 0:b33b91b2061f | 15 | |
OGA | 0:b33b91b2061f | 16 | uint8_t flag = 0; |
OGA | 0:b33b91b2061f | 17 | |
OGA | 0:b33b91b2061f | 18 | DigitalOut PingPinOut(ultrasonic_pin[i]); |
OGA | 0:b33b91b2061f | 19 | PingPinOut = 1; |
OGA | 0:b33b91b2061f | 20 | wait_us(10); |
OGA | 0:b33b91b2061f | 21 | PingPinOut = 0; |
OGA | 0:b33b91b2061f | 22 | DigitalIn PingPin(ultrasonic_pin[i]); |
OGA | 0:b33b91b2061f | 23 | timer2.reset(); |
OGA | 0:b33b91b2061f | 24 | while(PingPin == 0){ |
OGA | 0:b33b91b2061f | 25 | if(timer2.read_us() > 1500){ //1.5ms以上応答なし |
OGA | 0:b33b91b2061f | 26 | ultrasonicValue[i] = PING_ERR; |
OGA | 0:b33b91b2061f | 27 | flag = 1; |
OGA | 0:b33b91b2061f | 28 | break; |
OGA | 0:b33b91b2061f | 29 | } |
OGA | 0:b33b91b2061f | 30 | } |
OGA | 0:b33b91b2061f | 31 | |
OGA | 0:b33b91b2061f | 32 | timer2.reset(); |
OGA | 0:b33b91b2061f | 33 | while(PingPin == 1){ |
OGA | 0:b33b91b2061f | 34 | if((timer2.read_us() > 18500) || (flag == 1)){ //18.5ms以上のパルス |
OGA | 0:b33b91b2061f | 35 | ultrasonicValue[i] = PING_ERR; |
OGA | 0:b33b91b2061f | 36 | flag = 1; |
OGA | 0:b33b91b2061f | 37 | break; |
OGA | 0:b33b91b2061f | 38 | } |
OGA | 0:b33b91b2061f | 39 | } |
OGA | 0:b33b91b2061f | 40 | |
OGA | 0:b33b91b2061f | 41 | if(flag == 0){ |
OGA | 0:b33b91b2061f | 42 | ultrasonicValue[i] = timer2.read_us() / 1000000.0 / 2.0 * 340.0 * 1000.0; //mm MAX:3145 |
OGA | 0:b33b91b2061f | 43 | ultrasonicVal[i] = (int)(ultrasonicValue[i] * 10.0); |
OGA | 0:b33b91b2061f | 44 | }else{ |
OGA | 0:b33b91b2061f | 45 | ultrasonicVal[i] = PING_ERR; |
OGA | 0:b33b91b2061f | 46 | } |
OGA | 0:b33b91b2061f | 47 | |
OGA | 0:b33b91b2061f | 48 | } |
OGA | 0:b33b91b2061f | 49 | } |