Basic library to interface a 2 channel quadrature encoder with mBed

QuadratureEncoder.cpp

Committer:
el15lm
Date:
2017-07-24
Revision:
2:fcb3790af96b
Parent:
1:42d1e211e624

File content as of revision 2:fcb3790af96b:

#include "QuadratureEncoder.h"

QuadratureEncoder::QuadratureEncoder(PinName pinA, PinName pinB): _channelA(pinA), _channelB(pinB)
{
    _ticks = 0;
    _channelB.rise(this, &QuadratureEncoder::_Brising);
    _channelB.fall(this, &QuadratureEncoder::_Bfalling);
}

int QuadratureEncoder::getTicks()
{
    return _ticks;
}

void QuadratureEncoder::reset()
{
    _ticks = 0;
}

void QuadratureEncoder::_Brising()
{
    if (_channelA.read()) {
        _ticks--;
    } else {
        _ticks++;
    }
}

void QuadratureEncoder::_Bfalling()
{
    if (_channelA.read()) {
        _ticks++;
    } else {
        _ticks--;
    }
}