New version of quadcopter software written to OO principles
Dependencies: mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS
LidarLitePwm.cpp
00001 #include "LidarLitePwm.h" 00002 00003 LidarLitePwm::LidarLitePwm(PinName pin) : _interrupt(pin) 00004 { 00005 _pulseStartTime = 0; 00006 _range = 0; 00007 _lidarFilter = new filter(5); 00008 _timer.start(); 00009 _interrupt.rise(this, &LidarLitePwm::pulseStart); 00010 _interrupt.fall(this, &LidarLitePwm::pulseStop); 00011 } 00012 00013 LidarLitePwm::~LidarLitePwm(){} 00014 00015 int LidarLitePwm::read() 00016 { 00017 //if(_range < 30) return 0; 00018 //else return _range - 30; 00019 00020 return _range - 10; 00021 } 00022 00023 LidarLitePwm::operator int() 00024 { 00025 return read(); 00026 } 00027 00028 void LidarLitePwm::pulseStart() 00029 { 00030 _pulseStartTime = _timer.read_us(); 00031 } 00032 00033 void LidarLitePwm::pulseStop() 00034 { 00035 int endTime = _timer.read_us(); 00036 if (endTime < _pulseStartTime) return; // Escape if there's been a roll over 00037 int range = (endTime - _pulseStartTime) / 10; // 10uS per CM 00038 _range = _lidarFilter->process(range); 00039 }
Generated on Fri Jul 15 2022 00:21:58 by 1.7.2