New version of quadcopter software written to OO principles

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

Sensors/LidarLitePwm/LidarLitePwm.cpp

Committer:
joe4465
Date:
2015-05-08
Revision:
4:9ffbf9101992

File content as of revision 4:9ffbf9101992:

#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);
}