Library to use the ultrasonic sensor

Dependents:   test_ultrasonic AEB Car_Simulator

Revision:
3:9b06e5793b8b
Parent:
2:12da800fd10a
Child:
4:8c97476a5ebf
diff -r 12da800fd10a -r 9b06e5793b8b Ultrasonic.cpp
--- 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