diff options
Diffstat (limited to 'source/Concept/Framework/distance_sensor.cpp')
-rw-r--r-- | source/Concept/Framework/distance_sensor.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/source/Concept/Framework/distance_sensor.cpp b/source/Concept/Framework/distance_sensor.cpp index a11460c..c6c0582 100644 --- a/source/Concept/Framework/distance_sensor.cpp +++ b/source/Concept/Framework/distance_sensor.cpp @@ -1 +1,26 @@ -#include "distance_sensor.h"
\ No newline at end of file +#include "distance_sensor.h"
+
+//-----------------------------------------------------------------------------
+float Distance_Sensor::GetDistance()
+{
+ uint32 result = 0;
+
+ //Generate pulse
+ *hardwareDDR |= pin;//Set pin output
+ *hardwarePort |= pin;//Activate port
+ usleep(10);//Wait for 10µs
+ *hardwarePort &= ~pin;//Deactivate port
+ *hardwareDDR &= ~pin;//Set pin input
+
+ //Wait for response
+ while(!(*hardwarePin & pin));
+
+ //Calculate duration of response
+ while(*hardwarePin & pin)
+ {
+ result++;
+ asm volatile("nop");
+ }
+
+ return (float(result) * DISTANCE_PER_VALUE);
+}
|