New version of quadcopter software written to OO principles
Dependencies: mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS
Diff: Sensors/LidarLitePwm/LidarLitePwm.cpp
- Revision:
- 4:9ffbf9101992
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Sensors/LidarLitePwm/LidarLitePwm.cpp Fri May 08 09:07:38 2015 +0000
@@ -0,0 +1,39 @@
+#include "LidarLitePwm.h"
+
+LidarLitePwm::LidarLitePwm(PinName pin) : _interrupt(pin)
+{
+ _pulseStartTime = 0;
+ _range = 0;
+ _lidarFilter = new filter(5);
+ _timer.start();
+ _interrupt.rise(this, &LidarLitePwm::pulseStart);
+ _interrupt.fall(this, &LidarLitePwm::pulseStop);
+}
+
+LidarLitePwm::~LidarLitePwm(){}
+
+int LidarLitePwm::read()
+{
+ //if(_range < 30) return 0;
+ //else return _range - 30;
+
+ return _range - 10;
+}
+
+LidarLitePwm::operator int()
+{
+ return read();
+}
+
+void LidarLitePwm::pulseStart()
+{
+ _pulseStartTime = _timer.read_us();
+}
+
+void LidarLitePwm::pulseStop()
+{
+ int endTime = _timer.read_us();
+ if (endTime < _pulseStartTime) return; // Escape if there's been a roll over
+ int range = (endTime - _pulseStartTime) / 10; // 10uS per CM
+ _range = _lidarFilter->process(range);
+}
\ No newline at end of file
Joseph Roberts