MMlab / Mbed 2 deprecated PING_ultrasonic

Dependencies:   USBDevice mbed

Committer:
ikuta
Date:
Sat Sep 17 09:41:46 2016 +0000
Revision:
0:5d1796a0f9ce
Child:
1:5aa590d1f1bf
???????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ikuta 0:5d1796a0f9ce 1 #include "mbed.h"
ikuta 0:5d1796a0f9ce 2
ikuta 0:5d1796a0f9ce 3 Serial pc(USBTX,USBRX);
ikuta 0:5d1796a0f9ce 4
ikuta 0:5d1796a0f9ce 5 DigitalInOut pingPin1(p18);
ikuta 0:5d1796a0f9ce 6 DigitalInOut pingPin2(p19);
ikuta 0:5d1796a0f9ce 7
ikuta 0:5d1796a0f9ce 8 Timer tmr1, tmr2,tmr;
ikuta 0:5d1796a0f9ce 9 Timeout timeouter;
ikuta 0:5d1796a0f9ce 10 int flag=0;
ikuta 0:5d1796a0f9ce 11
ikuta 0:5d1796a0f9ce 12 long microsecondsToCentimeters(long microseconds);
ikuta 0:5d1796a0f9ce 13
ikuta 0:5d1796a0f9ce 14 void reset()
ikuta 0:5d1796a0f9ce 15 {
ikuta 0:5d1796a0f9ce 16 flag = 0;
ikuta 0:5d1796a0f9ce 17 tmr.reset();
ikuta 0:5d1796a0f9ce 18 }
ikuta 0:5d1796a0f9ce 19
ikuta 0:5d1796a0f9ce 20 int main()
ikuta 0:5d1796a0f9ce 21 {
ikuta 0:5d1796a0f9ce 22 pc.baud(115200);
ikuta 0:5d1796a0f9ce 23 while (1) {
ikuta 0:5d1796a0f9ce 24 long duration1, duration2,USSDistance1, USSDistance2, cm1, cm2, time;
ikuta 0:5d1796a0f9ce 25
ikuta 0:5d1796a0f9ce 26 pingPin1.output();
ikuta 0:5d1796a0f9ce 27 pingPin1 = 0;
ikuta 0:5d1796a0f9ce 28 wait_us(2);
ikuta 0:5d1796a0f9ce 29 pingPin1 = 1;
ikuta 0:5d1796a0f9ce 30 wait_us(5);
ikuta 0:5d1796a0f9ce 31 pingPin1 = 0;
ikuta 0:5d1796a0f9ce 32
ikuta 0:5d1796a0f9ce 33 pingPin1.input(); // pulseIn
ikuta 0:5d1796a0f9ce 34 tmr1.reset();
ikuta 0:5d1796a0f9ce 35
ikuta 0:5d1796a0f9ce 36 while (!pingPin1); // wait for high
ikuta 0:5d1796a0f9ce 37 tmr1.start();
ikuta 0:5d1796a0f9ce 38 while (pingPin1); // wait for low
ikuta 0:5d1796a0f9ce 39 tmr1.stop();
ikuta 0:5d1796a0f9ce 40 duration1 = tmr1.read_us();
ikuta 0:5d1796a0f9ce 41 USSDistance1 = duration1;// * 0.0170;
ikuta 0:5d1796a0f9ce 42
ikuta 0:5d1796a0f9ce 43 cm1 = microsecondsToCentimeters(USSDistance1);
ikuta 0:5d1796a0f9ce 44
ikuta 0:5d1796a0f9ce 45 if(15<cm1&&cm1<40) {
ikuta 0:5d1796a0f9ce 46 if(flag==0) {
ikuta 0:5d1796a0f9ce 47 flag=1;
ikuta 0:5d1796a0f9ce 48 tmr.reset();
ikuta 0:5d1796a0f9ce 49 tmr.start();
ikuta 0:5d1796a0f9ce 50 timeouter.attach(&reset, 5);
ikuta 0:5d1796a0f9ce 51 }
ikuta 0:5d1796a0f9ce 52 if(flag==1) {
ikuta 0:5d1796a0f9ce 53 timeouter.detach();
ikuta 0:5d1796a0f9ce 54 timeouter.attach(&reset, 5);
ikuta 0:5d1796a0f9ce 55 }
ikuta 0:5d1796a0f9ce 56 time=tmr.read_ms();
ikuta 0:5d1796a0f9ce 57 printf("1: %d %d[ms]\n", cm1,time);
ikuta 0:5d1796a0f9ce 58 }
ikuta 0:5d1796a0f9ce 59
ikuta 0:5d1796a0f9ce 60 wait_ms(10);
ikuta 0:5d1796a0f9ce 61
ikuta 0:5d1796a0f9ce 62
ikuta 0:5d1796a0f9ce 63 pingPin2.output();
ikuta 0:5d1796a0f9ce 64 pingPin2 = 0;
ikuta 0:5d1796a0f9ce 65 wait_us(2);
ikuta 0:5d1796a0f9ce 66 pingPin2 = 1;
ikuta 0:5d1796a0f9ce 67 wait_us(5);
ikuta 0:5d1796a0f9ce 68 pingPin2 = 0;
ikuta 0:5d1796a0f9ce 69
ikuta 0:5d1796a0f9ce 70 pingPin2.input(); // pulseIn
ikuta 0:5d1796a0f9ce 71 tmr2.reset();
ikuta 0:5d1796a0f9ce 72
ikuta 0:5d1796a0f9ce 73 while (!pingPin2); // wait for high
ikuta 0:5d1796a0f9ce 74 tmr2.start();
ikuta 0:5d1796a0f9ce 75 while (pingPin2); // wait for low
ikuta 0:5d1796a0f9ce 76 tmr2.stop();
ikuta 0:5d1796a0f9ce 77
ikuta 0:5d1796a0f9ce 78 duration2 = tmr2.read_us();
ikuta 0:5d1796a0f9ce 79 USSDistance2 = duration2;// * 0.0170;
ikuta 0:5d1796a0f9ce 80
ikuta 0:5d1796a0f9ce 81 cm2 = microsecondsToCentimeters(USSDistance2);
ikuta 0:5d1796a0f9ce 82 if(15<cm2&&cm2<40) {
ikuta 0:5d1796a0f9ce 83 time=tmr.read_ms();
ikuta 0:5d1796a0f9ce 84 printf(" 2: %d %d[ms]\n",cm2,time);
ikuta 0:5d1796a0f9ce 85 }
ikuta 0:5d1796a0f9ce 86 wait_ms(10);
ikuta 0:5d1796a0f9ce 87 }
ikuta 0:5d1796a0f9ce 88 }
ikuta 0:5d1796a0f9ce 89
ikuta 0:5d1796a0f9ce 90 long microsecondsToInches(long microseconds)
ikuta 0:5d1796a0f9ce 91 {
ikuta 0:5d1796a0f9ce 92 return microseconds / 74 / 2;
ikuta 0:5d1796a0f9ce 93 }
ikuta 0:5d1796a0f9ce 94
ikuta 0:5d1796a0f9ce 95 long microsecondsToCentimeters(long microseconds)
ikuta 0:5d1796a0f9ce 96 {
ikuta 0:5d1796a0f9ce 97 return microseconds / 29 / 2;
ikuta 0:5d1796a0f9ce 98 }