ss

Dependencies:   WS2812 PixelArray Adafruit_GFX

Committer:
eunsong
Date:
Sat Jun 15 13:48:45 2019 +0000
Revision:
3:700a0cf6beea
Parent:
0:27e31cadeb36
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eunsong 0:27e31cadeb36 1 #include "hcsr04.h"
eunsong 0:27e31cadeb36 2 #include "mbed.h"
eunsong 0:27e31cadeb36 3 /*
eunsong 0:27e31cadeb36 4 *HCSR04.cpp
eunsong 0:27e31cadeb36 5 */
eunsong 0:27e31cadeb36 6 HCSR04::HCSR04(PinName t, PinName e, RawSerial pc,int flag, int limit) : trig(t), echo(e), _pc(pc), flag(flag), _limit(limit) {}
eunsong 0:27e31cadeb36 7
eunsong 0:27e31cadeb36 8 void HCSR04::Trig()
eunsong 0:27e31cadeb36 9 {
eunsong 0:27e31cadeb36 10 timer.reset(); //reset timer
eunsong 0:27e31cadeb36 11 trig=0; // trigger low
eunsong 0:27e31cadeb36 12 wait_us(2); // wait
eunsong 0:27e31cadeb36 13 trig=1; // trigger high
eunsong 0:27e31cadeb36 14 wait_us(10);
eunsong 0:27e31cadeb36 15 trig=0; // trigger low
eunsong 0:27e31cadeb36 16 }
eunsong 0:27e31cadeb36 17
eunsong 0:27e31cadeb36 18 /*
eunsong 0:27e31cadeb36 19 void HCSR04::setMode(bool mode)
eunsong 0:27e31cadeb36 20 {
eunsong 0:27e31cadeb36 21 _repeat = mode;
eunsong 0:27e31cadeb36 22 }
eunsong 0:27e31cadeb36 23
eunsong 0:27e31cadeb36 24 void HCSR04::clearStatus()
eunsong 0:27e31cadeb36 25 {
eunsong 0:27e31cadeb36 26 _done = 0;
eunsong 0:27e31cadeb36 27 }
eunsong 0:27e31cadeb36 28
eunsong 0:27e31cadeb36 29 int HCSR04::getStatus()
eunsong 0:27e31cadeb36 30 {
eunsong 0:27e31cadeb36 31 return _done;
eunsong 0:27e31cadeb36 32 }*/
eunsong 0:27e31cadeb36 33
eunsong 0:27e31cadeb36 34
eunsong 0:27e31cadeb36 35
eunsong 0:27e31cadeb36 36 long HCSR04::echo_duration() {
eunsong 0:27e31cadeb36 37
eunsong 0:27e31cadeb36 38 Trig();
eunsong 0:27e31cadeb36 39 while(!echo); // start pulseIN
eunsong 0:27e31cadeb36 40 timer.start();
eunsong 0:27e31cadeb36 41 while(echo);
eunsong 0:27e31cadeb36 42 timer.stop();
eunsong 0:27e31cadeb36 43 return timer.read_us();
eunsong 0:27e31cadeb36 44
eunsong 0:27e31cadeb36 45 }
eunsong 0:27e31cadeb36 46
eunsong 0:27e31cadeb36 47 //return distance in cm
eunsong 0:27e31cadeb36 48 void HCSR04::distance(){
eunsong 0:27e31cadeb36 49 // _done++;
eunsong 0:27e31cadeb36 50 duration = echo_duration();
eunsong 0:27e31cadeb36 51 distance_cm = int((duration/2)/29.1) ;
eunsong 0:27e31cadeb36 52 _pc.printf("distance: %d\r\n", distance_cm);
eunsong 0:27e31cadeb36 53 if(distance_cm <= _limit){
eunsong 0:27e31cadeb36 54 flag = 1;
eunsong 0:27e31cadeb36 55 _pc.printf("\t\tFlag on distance: %d\r\n", distance_cm);
eunsong 0:27e31cadeb36 56
eunsong 0:27e31cadeb36 57 }
eunsong 0:27e31cadeb36 58 }
eunsong 0:27e31cadeb36 59
eunsong 0:27e31cadeb36 60 long HCSR04::returndistance()
eunsong 0:27e31cadeb36 61 {
eunsong 0:27e31cadeb36 62 return distance_cm;
eunsong 0:27e31cadeb36 63 }