Kristian Lauszus
/
BalancingRobotPS3
Code for my balancing robot, controlled with a PS3 controller via bluetooth
Encoder.h@3:c3963f37d597, 2012-02-26 (annotated)
- 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?
User | Revision | Line number | New 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 |