robocup

Dependencies:   HMC6352 PID mbed

Committer:
akudohune
Date:
Fri Mar 08 07:13:29 2013 +0000
Revision:
0:13ab960fc61f
ver1_2_0;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akudohune 0:13ab960fc61f 1
akudohune 0:13ab960fc61f 2 #include "mbed.h"
akudohune 0:13ab960fc61f 3 #include "ultrasonic.h"
akudohune 0:13ab960fc61f 4
akudohune 0:13ab960fc61f 5
akudohune 0:13ab960fc61f 6 extern Timer timer2;
akudohune 0:13ab960fc61f 7 extern Serial pc; // tx, rx
akudohune 0:13ab960fc61f 8
akudohune 0:13ab960fc61f 9 uint16_t ultrasonicVal[ALL_ULTRASONIC] = {0};
akudohune 0:13ab960fc61f 10
akudohune 0:13ab960fc61f 11
akudohune 0:13ab960fc61f 12 void Ultrasonic()
akudohune 0:13ab960fc61f 13 {
akudohune 0:13ab960fc61f 14 for(uint8_t i = 0 ; i < ALL_ULTRASONIC ; i++){
akudohune 0:13ab960fc61f 15 uint8_t flag = 0;
akudohune 0:13ab960fc61f 16
akudohune 0:13ab960fc61f 17 DigitalOut PingPinOut(ultrasonic_pin[i]);
akudohune 0:13ab960fc61f 18 PingPinOut = 1;
akudohune 0:13ab960fc61f 19 wait_us(10);
akudohune 0:13ab960fc61f 20 PingPinOut = 0;
akudohune 0:13ab960fc61f 21 DigitalIn PingPin(ultrasonic_pin[i]);
akudohune 0:13ab960fc61f 22 timer2.reset();
akudohune 0:13ab960fc61f 23 while(PingPin == 0){
akudohune 0:13ab960fc61f 24 if(timer2.read_us() > 1000){ //1ms以上応答なし
akudohune 0:13ab960fc61f 25 ultrasonicVal[i] = PING_ERR;
akudohune 0:13ab960fc61f 26 flag = 1;
akudohune 0:13ab960fc61f 27 break;
akudohune 0:13ab960fc61f 28 }
akudohune 0:13ab960fc61f 29 }
akudohune 0:13ab960fc61f 30 timer2.reset();
akudohune 0:13ab960fc61f 31 while(PingPin == 1){
akudohune 0:13ab960fc61f 32 if((timer2.read_us() > 18500) || (flag == 1)){ //18.5ms以上のパルス
akudohune 0:13ab960fc61f 33 ultrasonicVal[i] = PING_ERR;
akudohune 0:13ab960fc61f 34 flag = 1;
akudohune 0:13ab960fc61f 35 break;
akudohune 0:13ab960fc61f 36 }
akudohune 0:13ab960fc61f 37 }
akudohune 0:13ab960fc61f 38 if(flag == 0){
akudohune 0:13ab960fc61f 39 ultrasonicVal[i] = timer2.read_us();
akudohune 0:13ab960fc61f 40 }
akudohune 0:13ab960fc61f 41 //pc.printf("compass.sample = %f\n",compass.sample() / 1.0);
akudohune 0:13ab960fc61f 42 }
akudohune 0:13ab960fc61f 43 //pc.printf("%d\n",ultrasonicVal[2]);
akudohune 0:13ab960fc61f 44
akudohune 0:13ab960fc61f 45 }