sls

Dependencies:   mbed

Revision:
0:c1476d342c13
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hcsr04/hcsr04.cpp	Fri Apr 26 11:34:13 2019 +0000
@@ -0,0 +1,54 @@
+#include "hcsr04.h"
+
+#define v_o 343
+
+HCSR04::HCSR04(PinName TrigPin,PinName EchoPin):
+    trigger(TrigPin), echo(EchoPin)
+{
+    pulsetime.stop();
+    pulsetime.reset();
+    echo.rise(this,&HCSR04::isr_rise);
+    echo.fall(this,&HCSR04::isr_fall);
+    trigger=0;
+}
+
+HCSR04::~HCSR04()
+{
+}
+
+void HCSR04::isr_rise(void)
+{
+    pulsetime.start();
+}
+void HCSR04::start(void)
+{
+    trigger=1;
+    wait_us(10);
+    trigger=0;
+}
+
+void HCSR04::isr_fall(void)
+{
+    pulsetime.stop();
+    pulsedur = pulsetime.read_us();
+    distance= (pulsedur*v_o)/20000;
+    pulsetime.reset();
+}
+
+void HCSR04::rise (void (*fptr)(void))
+{
+    echo.rise(fptr);
+}
+void HCSR04::fall (void (*fptr)(void))
+{
+    echo.fall(fptr);
+}
+
+float HCSR04::get_dist_cm()
+{
+    return distance;
+}
+float HCSR04::get_pulse_us()
+{
+    return pulsedur;
+}
\ No newline at end of file