Code for my balancing robot, controlled with a PS3 controller via bluetooth

Dependencies:   mbed

Committer:
Lauszus
Date:
Sun Feb 26 13:11:10 2012 +0000
Revision:
3:c3963f37d597
Child:
4:0b4c320bc948
Implemented encoders

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Lauszus 3:c3963f37d597 1 #ifndef _encoder_h_
Lauszus 3:c3963f37d597 2 #define _encoder_h_
Lauszus 3:c3963f37d597 3
Lauszus 3:c3963f37d597 4 class Encoder {
Lauszus 3:c3963f37d597 5 public:
Lauszus 3:c3963f37d597 6 Encoder(PinName pinA, PinName pinB) : _HallSensorA(pinA), _HallSensorB(pinB) {
Lauszus 3:c3963f37d597 7 _counter = 0;
Lauszus 3:c3963f37d597 8 _HallSensorA.rise(this, &Encoder::EncodeA);
Lauszus 3:c3963f37d597 9 }
Lauszus 3:c3963f37d597 10 long read() {
Lauszus 3:c3963f37d597 11 return _counter;
Lauszus 3:c3963f37d597 12 }
Lauszus 3:c3963f37d597 13 private:
Lauszus 3:c3963f37d597 14 volatile long _counter;
Lauszus 3:c3963f37d597 15 InterruptIn _HallSensorA;
Lauszus 3:c3963f37d597 16 DigitalIn _HallSensorB;
Lauszus 3:c3963f37d597 17
Lauszus 3:c3963f37d597 18 void EncodeA() {
Lauszus 3:c3963f37d597 19 if (_HallSensorB.read())
Lauszus 3:c3963f37d597 20 _counter++;
Lauszus 3:c3963f37d597 21 else
Lauszus 3:c3963f37d597 22 _counter--;
Lauszus 3:c3963f37d597 23 }
Lauszus 3:c3963f37d597 24 };
Lauszus 3:c3963f37d597 25
Lauszus 3:c3963f37d597 26 #endif