大昔の超音波センサプログラム

Dependencies:   TextLCD mbed

Committer:
yuron
Date:
Sat Jul 14 02:10:51 2018 +0000
Revision:
0:f43a798a392d
??????????????

Who changed what in which revision?

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