basic Quadrature Encoder Library

Dependents:   ESP8266_pid_mtrPos_webserver_SDcard_v2 ESP8266_pid_mtrSpeed_Webserver_SDcard ESP8266_pid_spd_and_pos_webserver_SDcard pid_encoder_speed_demo ... more

QEI.h

Committer:
electromotivated
Date:
2015-11-23
Revision:
0:50aae578cb89

File content as of revision 0:50aae578cb89:

#ifndef QEI_H
#define QEI_H

/*
    Basic Quadrature Encoder Interface (QEI) Class.
    
    TODO: Expand to allow setting of quad mode, i.e. count on 
    rising of A only, rising and falling of A, rising and falling 
    of both A and B. (Forgot what these modes are called but 
    can be found in literature online.) 
*/

#include "mbed.h"

class QEI{
    public:
        /*
            Constructor for QEI objects
            @param encA     The mbed pin that encoder input A is on
            @param encB     The mbed pin that encoder input B is on
        */
        QEI(PinName encA, PinName encB);
        /*
            read() returns total number of counts of the encoder.
            Count can be +/- and indicates the overall direction,
            (+): CW (-): CCW
            @return     The toltal number of counts of the encoder.
            
            TODO: Add Conversion Overload for this method
        */
        long read();
        /*
            reset() clears the counter to 0. 
        */
        void reset();
    private:
        long count;         // Total number of counts since start.
        InterruptIn _encA;  // Encoder A interrupt pin
        DigitalIn _encB;    // Encoder B input pin
        /*
            Increments/Decrements count on interrrupt.
        */
        void callback();    // Interrupt callback function
};

#endif