New version of quadcopter software written to OO principles

Dependencies:   mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS

Committer:
joe4465
Date:
Fri May 08 09:07:38 2015 +0000
Revision:
4:9ffbf9101992
End of FYP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joe4465 4:9ffbf9101992 1 #include "LidarLitePwm.h"
joe4465 4:9ffbf9101992 2
joe4465 4:9ffbf9101992 3 LidarLitePwm::LidarLitePwm(PinName pin) : _interrupt(pin)
joe4465 4:9ffbf9101992 4 {
joe4465 4:9ffbf9101992 5 _pulseStartTime = 0;
joe4465 4:9ffbf9101992 6 _range = 0;
joe4465 4:9ffbf9101992 7 _lidarFilter = new filter(5);
joe4465 4:9ffbf9101992 8 _timer.start();
joe4465 4:9ffbf9101992 9 _interrupt.rise(this, &LidarLitePwm::pulseStart);
joe4465 4:9ffbf9101992 10 _interrupt.fall(this, &LidarLitePwm::pulseStop);
joe4465 4:9ffbf9101992 11 }
joe4465 4:9ffbf9101992 12
joe4465 4:9ffbf9101992 13 LidarLitePwm::~LidarLitePwm(){}
joe4465 4:9ffbf9101992 14
joe4465 4:9ffbf9101992 15 int LidarLitePwm::read()
joe4465 4:9ffbf9101992 16 {
joe4465 4:9ffbf9101992 17 //if(_range < 30) return 0;
joe4465 4:9ffbf9101992 18 //else return _range - 30;
joe4465 4:9ffbf9101992 19
joe4465 4:9ffbf9101992 20 return _range - 10;
joe4465 4:9ffbf9101992 21 }
joe4465 4:9ffbf9101992 22
joe4465 4:9ffbf9101992 23 LidarLitePwm::operator int()
joe4465 4:9ffbf9101992 24 {
joe4465 4:9ffbf9101992 25 return read();
joe4465 4:9ffbf9101992 26 }
joe4465 4:9ffbf9101992 27
joe4465 4:9ffbf9101992 28 void LidarLitePwm::pulseStart()
joe4465 4:9ffbf9101992 29 {
joe4465 4:9ffbf9101992 30 _pulseStartTime = _timer.read_us();
joe4465 4:9ffbf9101992 31 }
joe4465 4:9ffbf9101992 32
joe4465 4:9ffbf9101992 33 void LidarLitePwm::pulseStop()
joe4465 4:9ffbf9101992 34 {
joe4465 4:9ffbf9101992 35 int endTime = _timer.read_us();
joe4465 4:9ffbf9101992 36 if (endTime < _pulseStartTime) return; // Escape if there's been a roll over
joe4465 4:9ffbf9101992 37 int range = (endTime - _pulseStartTime) / 10; // 10uS per CM
joe4465 4:9ffbf9101992 38 _range = _lidarFilter->process(range);
joe4465 4:9ffbf9101992 39 }