Library to use the ultrasonic sensor
Dependents: test_ultrasonic AEB Car_Simulator
Diff: Ultrasonic.cpp
- Revision:
- 3:9b06e5793b8b
- Parent:
- 2:12da800fd10a
- Child:
- 4:8c97476a5ebf
--- a/Ultrasonic.cpp Sat Jun 04 18:23:50 2016 +0000 +++ b/Ultrasonic.cpp Sun Jun 05 12:23:48 2016 +0000 @@ -2,28 +2,30 @@ #include "Ultrasonic.h" -float DistanceCM = 0; -DigitalOut trigger(TRIGGER); -InterruptIn echo(ECHO); // Attach interrupt to the echo pin -Timer timer; -Ticker tick; -Timeout timeout; +Ultrasonic::Ultrasonic(PinName trigger, PinName echo): _trigger(trigger) , _echo(echo) +{ + //_trigger = trigger; + //_echo = echo; + Ultrasonic_init(); +} + + /* * Call this function and it will return the distance in centimeter */ -float read_cm() +int Ultrasonic::read_cm() { return DistanceCM; } -void start() +void Ultrasonic::start() { timer.start(); } -void stop() +void Ultrasonic::stop() { DistanceCM = timer.read_us()/58; timer.stop(); @@ -32,24 +34,25 @@ timeout.detach(); } -void trig() +void Ultrasonic::trig() { - timeout.attach(&timeout_err, 0.05); - trigger = 1; + timeout.attach(this, this.timeout_err, 0.05); + _trigger = 1; wait_us(10); - trigger = 0; + _trigger = 0; } -void Ultrasonic_init() +void Ultrasonic::Ultrasonic_init() { + DistanceCM = 0; timer.reset(); - echo.rise(&start); - echo.fall(&stop); + _echo.rise(&Ultrasonic::start); + _echo.fall(&stop); tick.attach(&trig,0.06); } -void timeout_err() +void Ultrasonic::timeout_err() { // Timeout elapsed -> there is some problem // out the distance to zero to highligth error