Library for digital quadrature encoder

Dependents:   VNH5019_2 VNH5019_1

Committer:
TeaPack_CZ
Date:
Sat Feb 25 22:00:09 2017 +0000
Revision:
4:f803ea95592c
Parent:
3:6cd47cdf8708
remove redundant mbed.bld from library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TeaPack_CZ 1:ff2c7733729e 1 /** Class for the digital quadrature encoder.
TeaPack_CZ 1:ff2c7733729e 2 * This class is using two pins for detecting all edges generated by the quadrature encoder.\n\n
TeaPack_CZ 1:ff2c7733729e 3 *
TeaPack_CZ 1:ff2c7733729e 4 *
TeaPack_CZ 2:668ac045b338 5 * Writen by: Jan Crha (TeaPack_CZ), 2016.
TeaPack_CZ 1:ff2c7733729e 6 *
TeaPack_CZ 2:668ac045b338 7 * Last modified: 2016-09-21
TeaPack_CZ 1:ff2c7733729e 8 *
TeaPack_CZ 1:ff2c7733729e 9 * Example:
TeaPack_CZ 1:ff2c7733729e 10 * @code
TeaPack_CZ 1:ff2c7733729e 11 * #include "mbed.h"
TeaPack_CZ 1:ff2c7733729e 12 * #include "Encoder.h"
TeaPack_CZ 1:ff2c7733729e 13 *
TeaPack_CZ 1:ff2c7733729e 14 * Serial PC(USBTX,USBRX);
TeaPack_CZ 1:ff2c7733729e 15 * Encoder encoder(p11,p12);
TeaPack_CZ 1:ff2c7733729e 16 *
TeaPack_CZ 1:ff2c7733729e 17 * int main(){
TeaPack_CZ 1:ff2c7733729e 18 *
TeaPack_CZ 1:ff2c7733729e 19 * encoder.setEnabled(true);
TeaPack_CZ 1:ff2c7733729e 20 *
TeaPack_CZ 1:ff2c7733729e 21 * while(1)
TeaPack_CZ 1:ff2c7733729e 22 * {
TeaPack_CZ 3:6cd47cdf8708 23 * PC.printf("%d",encoder.getDist());
TeaPack_CZ 1:ff2c7733729e 24 * wait(0.1);
TeaPack_CZ 1:ff2c7733729e 25 * }
TeaPack_CZ 1:ff2c7733729e 26 * }
TeaPack_CZ 1:ff2c7733729e 27 * @endcode
TeaPack_CZ 1:ff2c7733729e 28 */
TeaPack_CZ 1:ff2c7733729e 29
TeaPack_CZ 1:ff2c7733729e 30 #include "mbed.h"
TeaPack_CZ 1:ff2c7733729e 31
TeaPack_CZ 1:ff2c7733729e 32 class Encoder{
TeaPack_CZ 1:ff2c7733729e 33
TeaPack_CZ 1:ff2c7733729e 34 public:
TeaPack_CZ 1:ff2c7733729e 35
TeaPack_CZ 1:ff2c7733729e 36 /** Class contructor.
TeaPack_CZ 1:ff2c7733729e 37 * Both pins have to be compatible with the InterruptIn class.
TeaPack_CZ 1:ff2c7733729e 38 */
TeaPack_CZ 1:ff2c7733729e 39 Encoder(PinName InA, PinName InB);
TeaPack_CZ 1:ff2c7733729e 40
TeaPack_CZ 1:ff2c7733729e 41 /** Function for repetitive getting counts from the encoder
TeaPack_CZ 1:ff2c7733729e 42 * @return returns number of edges detected from the last call
TeaPack_CZ 1:ff2c7733729e 43 */
TeaPack_CZ 1:ff2c7733729e 44 int getDist();
TeaPack_CZ 1:ff2c7733729e 45
TeaPack_CZ 1:ff2c7733729e 46 /** Function returning total counts, direction dependent.
TeaPack_CZ 1:ff2c7733729e 47 * counts can be set to zero by calling function clr()
TeaPack_CZ 1:ff2c7733729e 48 */
TeaPack_CZ 1:ff2c7733729e 49 int getTotalDist();
TeaPack_CZ 1:ff2c7733729e 50
TeaPack_CZ 1:ff2c7733729e 51 /** Function setting total distance to zero*/
TeaPack_CZ 1:ff2c7733729e 52 void clr();
TeaPack_CZ 1:ff2c7733729e 53
TeaPack_CZ 1:ff2c7733729e 54 /** Function for enabling encoder interrupts detection*/
TeaPack_CZ 1:ff2c7733729e 55 void setEnabled(bool);
TeaPack_CZ 1:ff2c7733729e 56
TeaPack_CZ 1:ff2c7733729e 57 /** Function for getting state of encoders */
TeaPack_CZ 1:ff2c7733729e 58 bool isEnabled();
TeaPack_CZ 1:ff2c7733729e 59
TeaPack_CZ 1:ff2c7733729e 60 private:
TeaPack_CZ 1:ff2c7733729e 61
TeaPack_CZ 1:ff2c7733729e 62 void enable_irq();
TeaPack_CZ 1:ff2c7733729e 63 void disable_irq();
TeaPack_CZ 1:ff2c7733729e 64
TeaPack_CZ 1:ff2c7733729e 65 DigitalIn _pinA;
TeaPack_CZ 1:ff2c7733729e 66 DigitalIn _pinB;
TeaPack_CZ 1:ff2c7733729e 67 InterruptIn _inA;
TeaPack_CZ 1:ff2c7733729e 68 InterruptIn _inB;
TeaPack_CZ 1:ff2c7733729e 69
TeaPack_CZ 1:ff2c7733729e 70 int puls;
TeaPack_CZ 1:ff2c7733729e 71 int dist;
TeaPack_CZ 1:ff2c7733729e 72 int total_dist;
TeaPack_CZ 1:ff2c7733729e 73 bool enabled;
TeaPack_CZ 1:ff2c7733729e 74
TeaPack_CZ 1:ff2c7733729e 75 void inAhi();
TeaPack_CZ 1:ff2c7733729e 76 void inAlo();
TeaPack_CZ 1:ff2c7733729e 77 void inBhi();
TeaPack_CZ 1:ff2c7733729e 78 void inBlo();
TeaPack_CZ 1:ff2c7733729e 79 };