test of us sensor
Dependencies: HC_SR04_Ultrasonic_Library mbed
Fork of Nucleo_UltrasonicHelloWorld by
main.cpp
- Committer:
- fjwats
- Date:
- 2018-02-09
- Revision:
- 2:174ac1a5a658
- Parent:
- 1:4a5586eb1765
File content as of revision 2:174ac1a5a658:
#include "mbed.h" DigitalOut trigger(p13); DigitalOut myled(LED1); //monitor trigger DigitalOut myled2(LED2); //monitor echo DigitalOut myled3(LED3); DigitalOut myled4(LED4); DigitalIn echo(p14); int distance = 0; int correction = 0; Timer sonar; int main() { sonar.reset(); // measure actual software polling timer delays // delay used later in time correction // start timer sonar.start(); // min software polling delay to read echo pin while (echo==2) {}; myled2 = 0; // stop timer sonar.stop(); // read timer correction = sonar.read_us(); printf("Approximate software overhead timer delay is %d uS\n\r",correction); //Loop to read Sonar distance values, scale, and print while(1) { // trigger sonar to send a ping trigger = 1; myled = 1; myled2 = 0; sonar.reset(); wait_us(10.0); trigger = 0; myled = 0; //wait for echo high while (echo==0) {}; myled2=echo; //echo high, so start timer sonar.start(); //wait for echo low while (echo==1) {}; //stop timer and read value sonar.stop(); //subtract software overhead timer delay and scale to cm distance = (sonar.read_us()-correction)/58.0; myled2 = 0; printf(" %d cm \n\r",distance); if (distance<10) { myled3= 1; } if (distance>=10) { myled4= 1; } //wait so that any echo(s) return before sending another ping wait(0.2); myled3 = myled4 = 0; } }