Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:5d1796a0f9ce, 2016-09-17 (annotated)
- Committer:
- ikuta
- Date:
- Sat Sep 17 09:41:46 2016 +0000
- Revision:
- 0:5d1796a0f9ce
- Child:
- 1:5aa590d1f1bf
???????
Who changed what in which revision?
User | Revision | Line number | New 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 | } |