a

Dependencies:   TextLCD mbed

Committer:
akudohune
Date:
Tue Apr 30 09:06:57 2013 +0000
Revision:
1:ed00e9c4ba6e
Parent:
0:62ac378df546
ooo

Who changed what in which revision?

UserRevisionLine numberNew 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 }