Library for controlling ultrasonic ranging module HCSR04 Ported by hiawoood from arduino library orgininally created by ITead studio.

Dependents:   Ultrasonic test ZMOTO42 catchCats ... more

Files at this revision

API Documentation at this revision

Comitter:
aralshukaili
Date:
Tue Oct 18 14:32:12 2011 +0000
Commit message:
1.0

Changed in this revision

HCSR04.cpp Show annotated file Show diff for this revision Revisions of this file
HCSR04.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HCSR04.cpp	Tue Oct 18 14:32:12 2011 +0000
@@ -0,0 +1,41 @@
+#include "HCSR04.h"
+#include "mbed.h"
+
+
+HCSR04::HCSR04(PinName t, PinName e) : trig(t), echo(e) {}
+
+//      Trigger          Echo
+//      _______           _____________,,,,,,,,,
+// ____|  10us |_________| 150us-25ms, or 38ms if no obstacle
+// 
+
+//return echo duration in us (refer to digram above)
+long HCSR04::echo_duration() {
+    timer.reset();
+    trig = 0;
+    wait_us(2);
+    trig = 1;
+    wait_us(10);
+    trig = 0;
+    while(echo == 0);
+    timer.start();
+    while(echo == 1);
+    timer.stop();
+    return timer.read_us();
+}
+
+//return distance to nearest obstacle or returns -1 
+//if no obstacle within range
+//set sys to cm or inch accordingly
+long HCSR04::distance(int sys){
+    duration = echo_duration();
+    if(duration > 30000)
+        return -1;
+    distacne_cm = duration /29 / 2 ;
+    distance_inc = duration / 74 / 2;
+    if (sys)
+        return distacne_cm;
+    else
+        return distance_inc;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HCSR04.h	Tue Oct 18 14:32:12 2011 +0000
@@ -0,0 +1,39 @@
+//Library for controlling ultrasonic module HCSR04
+//Ported by hiawoood from arduino library orgininally created by ITead studio.
+//Instantiate object by supplying the proper pin numbers of "trigger" and "echo"
+//e.g. 
+/*
+        int main() {
+            Ultrasonic sensor(p5, p6);
+            while(1){
+                long distance = sensor.distance(CM);
+                printf("Distance:%d\n");
+                wait(0.1);
+            }
+        }
+*/
+
+
+
+#ifndef HCSR04_H
+#define HCSR04_H
+
+#include "mbed.h"
+
+#define CM 1
+#define INC 0
+
+class HCSR04 {
+  public:
+    HCSR04(PinName t, PinName e);
+    long echo_duration();
+    long distance(int sys);
+
+    private:
+        DigitalOut trig;
+        DigitalIn echo;
+        Timer timer;
+        long duration,distacne_cm,distance_inc;
+};
+
+#endif
\ No newline at end of file