Library for the LidarLite, gets distance in cm using the pwm output
Fork of MaxbotixDriver by
Revision 3:0b1f4404cb21, committed 2015-04-01
- Comitter:
- joe4465
- Date:
- Wed Apr 01 11:18:45 2015 +0000
- Parent:
- 2:be66a4cd86c0
- Commit message:
- ...
Changed in this revision
LidarLitePwm.cpp | Show annotated file Show diff for this revision Revisions of this file |
LidarLitePwm.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r be66a4cd86c0 -r 0b1f4404cb21 LidarLitePwm.cpp --- a/LidarLitePwm.cpp Wed Mar 18 09:17:13 2015 +0000 +++ b/LidarLitePwm.cpp Wed Apr 01 11:18:45 2015 +0000 @@ -4,6 +4,7 @@ { _pulseStartTime = 0; _range = 0; + _lidarFilter = new filter(5); _timer.start(); _interrupt.rise(this, &LidarLitePwm::pulseStart); _interrupt.fall(this, &LidarLitePwm::pulseStop); @@ -13,7 +14,8 @@ int LidarLitePwm::read() { - return _range; + if(_range < 30) return 0; + else return _range - 30; } LidarLitePwm::operator int() @@ -30,5 +32,6 @@ { int endTime = _timer.read_us(); if (endTime < _pulseStartTime) return; // Escape if there's been a roll over - _range = (endTime - _pulseStartTime) / 10; // 10uS per CM + int range = (endTime - _pulseStartTime) / 10; // 10uS per CM + _range = _lidarFilter->process(range); } \ No newline at end of file
diff -r be66a4cd86c0 -r 0b1f4404cb21 LidarLitePwm.h --- a/LidarLitePwm.h Wed Mar 18 09:17:13 2015 +0000 +++ b/LidarLitePwm.h Wed Apr 01 11:18:45 2015 +0000 @@ -1,4 +1,5 @@ #include "mbed.h" +#include "filter.h" #ifndef LidarLitePwm_H #define LidarLitePwm_H @@ -12,6 +13,7 @@ /// Returns range in cm as int int read(); + /// Returns the range in CM as an int operator int(); @@ -30,6 +32,8 @@ int _pulseStartTime; /// The most recent sample int _range; + + filter* _lidarFilter; }; #endif \ No newline at end of file