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