INCTRC Information Sharing Test
/
UltraSonic
大昔の超音波センサプログラム
main.cpp@0:f43a798a392d, 2018-07-14 (annotated)
- Committer:
- yuron
- Date:
- Sat Jul 14 02:10:51 2018 +0000
- Revision:
- 0:f43a798a392d
??????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yuron | 0:f43a798a392d | 1 | /* |
yuron | 0:f43a798a392d | 2 | ちょうおんぱせんさHC-SR04をしよう |
yuron | 0:f43a798a392d | 3 | LCDにきょりをひょうじ |
yuron | 0:f43a798a392d | 4 | 30cmいかのきょりならばLEDがひかる |
yuron | 0:f43a798a392d | 5 | */ |
yuron | 0:f43a798a392d | 6 | #include "mbed.h" |
yuron | 0:f43a798a392d | 7 | #include "TextLCD.h" |
yuron | 0:f43a798a392d | 8 | |
yuron | 0:f43a798a392d | 9 | TextLCD lcd(D12, D11, D10, D9, D8, D7, TextLCD::LCD20x2); // rs, e, d4-d7 |
yuron | 0:f43a798a392d | 10 | DigitalOut trigger(D15); |
yuron | 0:f43a798a392d | 11 | DigitalOut myled(LED1); |
yuron | 0:f43a798a392d | 12 | DigitalIn echo(D14); |
yuron | 0:f43a798a392d | 13 | int distance = 0; |
yuron | 0:f43a798a392d | 14 | int correction = 0; |
yuron | 0:f43a798a392d | 15 | Timer sonar; |
yuron | 0:f43a798a392d | 16 | |
yuron | 0:f43a798a392d | 17 | int main() |
yuron | 0:f43a798a392d | 18 | { |
yuron | 0:f43a798a392d | 19 | sonar.reset(); |
yuron | 0:f43a798a392d | 20 | while(1) { |
yuron | 0:f43a798a392d | 21 | // trigger sonar to send a ping |
yuron | 0:f43a798a392d | 22 | trigger = 1; |
yuron | 0:f43a798a392d | 23 | sonar.reset(); |
yuron | 0:f43a798a392d | 24 | wait_us(10.0); |
yuron | 0:f43a798a392d | 25 | trigger = 0; |
yuron | 0:f43a798a392d | 26 | //wait for echo high |
yuron | 0:f43a798a392d | 27 | while (echo==0) {}; |
yuron | 0:f43a798a392d | 28 | //echo high, so start timer |
yuron | 0:f43a798a392d | 29 | sonar.start(); |
yuron | 0:f43a798a392d | 30 | //wait for echo low |
yuron | 0:f43a798a392d | 31 | while (echo==1) {}; |
yuron | 0:f43a798a392d | 32 | //stop timer and read value |
yuron | 0:f43a798a392d | 33 | sonar.stop(); |
yuron | 0:f43a798a392d | 34 | //subtract software overhead timer delay and scale to cm |
yuron | 0:f43a798a392d | 35 | distance = (sonar.read_us()-correction)/58.0; |
yuron | 0:f43a798a392d | 36 | if(distance <= 30){ |
yuron | 0:f43a798a392d | 37 | myled = 1; |
yuron | 0:f43a798a392d | 38 | } else { |
yuron | 0:f43a798a392d | 39 | myled = 0; |
yuron | 0:f43a798a392d | 40 | } |
yuron | 0:f43a798a392d | 41 | lcd.printf("%d cm \n\r",distance); |
yuron | 0:f43a798a392d | 42 | //wait so that any echo(s) return before sending another ping |
yuron | 0:f43a798a392d | 43 | wait(0.2); |
yuron | 0:f43a798a392d | 44 | } |
yuron | 0:f43a798a392d | 45 | } |