Lib for Bulme Bertl
Dependents: BertlPingPong BertlTemplate LineSensTest MotorTest2 ... more
Bertl14.h@0:e0131e671ea0, 2014-04-25 (annotated)
- Committer:
- hollegha2
- Date:
- Fri Apr 25 14:35:21 2014 +0000
- Revision:
- 0:e0131e671ea0
- Child:
- 1:cb66be3bb78f
- Child:
- 2:16a5d3302ddb
Initial Rev.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hollegha2 | 0:e0131e671ea0 | 1 | |
hollegha2 | 0:e0131e671ea0 | 2 | #ifndef Bertl14_h |
hollegha2 | 0:e0131e671ea0 | 3 | #define Bertl14_h |
hollegha2 | 0:e0131e671ea0 | 4 | |
hollegha2 | 0:e0131e671ea0 | 5 | class Motor { |
hollegha2 | 0:e0131e671ea0 | 6 | public: |
hollegha2 | 0:e0131e671ea0 | 7 | Motor(PinName pwm, PinName fwd, PinName rev); |
hollegha2 | 0:e0131e671ea0 | 8 | void SetPow(float aPow); |
hollegha2 | 0:e0131e671ea0 | 9 | protected: |
hollegha2 | 0:e0131e671ea0 | 10 | PwmOut _pwm; |
hollegha2 | 0:e0131e671ea0 | 11 | DigitalOut _fwd; |
hollegha2 | 0:e0131e671ea0 | 12 | DigitalOut _rev; |
hollegha2 | 0:e0131e671ea0 | 13 | }; |
hollegha2 | 0:e0131e671ea0 | 14 | |
hollegha2 | 0:e0131e671ea0 | 15 | class BertlDrive : public Motor { |
hollegha2 | 0:e0131e671ea0 | 16 | public: |
hollegha2 | 0:e0131e671ea0 | 17 | int16_t encCnt; |
hollegha2 | 0:e0131e671ea0 | 18 | public: |
hollegha2 | 0:e0131e671ea0 | 19 | BertlDrive(PinName pwm, PinName fwd, PinName rev, PinName encoder); |
hollegha2 | 0:e0131e671ea0 | 20 | void Init(); |
hollegha2 | 0:e0131e671ea0 | 21 | private: |
hollegha2 | 0:e0131e671ea0 | 22 | void EncoderISR(); |
hollegha2 | 0:e0131e671ea0 | 23 | InterruptIn _enc; |
hollegha2 | 0:e0131e671ea0 | 24 | }; |
hollegha2 | 0:e0131e671ea0 | 25 | |
hollegha2 | 0:e0131e671ea0 | 26 | |
hollegha2 | 0:e0131e671ea0 | 27 | const int BTN_FLL = 0x80; |
hollegha2 | 0:e0131e671ea0 | 28 | const int BTN_FL = 0x04; |
hollegha2 | 0:e0131e671ea0 | 29 | const int BTN_FM = 0x01; |
hollegha2 | 0:e0131e671ea0 | 30 | const int BTN_FR = 0x08; |
hollegha2 | 0:e0131e671ea0 | 31 | const int BTN_FRR = 0x40; |
hollegha2 | 0:e0131e671ea0 | 32 | const int BTN_BL = 0x10; |
hollegha2 | 0:e0131e671ea0 | 33 | const int BTN_BM = 0x02; |
hollegha2 | 0:e0131e671ea0 | 34 | const int BTN_BR = 0x20; |
hollegha2 | 0:e0131e671ea0 | 35 | |
hollegha2 | 0:e0131e671ea0 | 36 | const int LED_FL1 = 0x01; // white die vordere |
hollegha2 | 0:e0131e671ea0 | 37 | const int LED_FL2 = 0x02; // red die hintere |
hollegha2 | 0:e0131e671ea0 | 38 | const int LED_FR1 = 0x04; // white |
hollegha2 | 0:e0131e671ea0 | 39 | const int LED_FR2 = 0x08; // red |
hollegha2 | 0:e0131e671ea0 | 40 | const int LED_ALL_FRONT = 0x0F; |
hollegha2 | 0:e0131e671ea0 | 41 | |
hollegha2 | 0:e0131e671ea0 | 42 | const int LED_BL1 = 0x20; // red back left outher |
hollegha2 | 0:e0131e671ea0 | 43 | const int LED_BL2 = 0x10; // red back left inner |
hollegha2 | 0:e0131e671ea0 | 44 | const int LED_BR1 = 0x80; // red back right outher |
hollegha2 | 0:e0131e671ea0 | 45 | const int LED_BR2 = 0x40; // red back right inner |
hollegha2 | 0:e0131e671ea0 | 46 | const int LED_ALL_BACK = 0xF0; |
hollegha2 | 0:e0131e671ea0 | 47 | |
hollegha2 | 0:e0131e671ea0 | 48 | |
hollegha2 | 0:e0131e671ea0 | 49 | class PortEx { |
hollegha2 | 0:e0131e671ea0 | 50 | public: |
hollegha2 | 0:e0131e671ea0 | 51 | // Current State of Buttons is refreshed with ReadButtons() |
hollegha2 | 0:e0131e671ea0 | 52 | int16_t btns; |
hollegha2 | 0:e0131e671ea0 | 53 | uint8_t btnEvent; |
hollegha2 | 0:e0131e671ea0 | 54 | uint8_t useISR; |
hollegha2 | 0:e0131e671ea0 | 55 | public: |
hollegha2 | 0:e0131e671ea0 | 56 | PortEx(); |
hollegha2 | 0:e0131e671ea0 | 57 | void Init(); |
hollegha2 | 0:e0131e671ea0 | 58 | |
hollegha2 | 0:e0131e671ea0 | 59 | void SetLedPort(uint8_t aBitPattern); // NO local Bit-OR |
hollegha2 | 0:e0131e671ea0 | 60 | void SetLeds(uint8_t aBitPattern); |
hollegha2 | 0:e0131e671ea0 | 61 | void ToggleLeds(uint8_t aBitPattern); |
hollegha2 | 0:e0131e671ea0 | 62 | void ClearLeds(); |
hollegha2 | 0:e0131e671ea0 | 63 | |
hollegha2 | 0:e0131e671ea0 | 64 | void ReadButtons(); |
hollegha2 | 0:e0131e671ea0 | 65 | void WaitUntilButtonPressed(); |
hollegha2 | 0:e0131e671ea0 | 66 | |
hollegha2 | 0:e0131e671ea0 | 67 | bool IsButton(int aBitPattern) |
hollegha2 | 0:e0131e671ea0 | 68 | { return btns & aBitPattern; } |
hollegha2 | 0:e0131e671ea0 | 69 | |
hollegha2 | 0:e0131e671ea0 | 70 | bool IsAnyFrontButton() |
hollegha2 | 0:e0131e671ea0 | 71 | { return btns & (BTN_FL|BTN_FM|BTN_FR); } |
hollegha2 | 0:e0131e671ea0 | 72 | |
hollegha2 | 0:e0131e671ea0 | 73 | bool IsAnyBackButton() |
hollegha2 | 0:e0131e671ea0 | 74 | { return btns & (BTN_BL|BTN_BM|BTN_BR); } |
hollegha2 | 0:e0131e671ea0 | 75 | private: |
hollegha2 | 0:e0131e671ea0 | 76 | uint8_t _currLeds; |
hollegha2 | 0:e0131e671ea0 | 77 | void p6ISR(); |
hollegha2 | 0:e0131e671ea0 | 78 | I2C _i2c; |
hollegha2 | 0:e0131e671ea0 | 79 | const int DEV = 0x40; |
hollegha2 | 0:e0131e671ea0 | 80 | InterruptIn _p6Event; |
hollegha2 | 0:e0131e671ea0 | 81 | }; |
hollegha2 | 0:e0131e671ea0 | 82 | |
hollegha2 | 0:e0131e671ea0 | 83 | |
hollegha2 | 0:e0131e671ea0 | 84 | class UsDistSens { |
hollegha2 | 0:e0131e671ea0 | 85 | public: |
hollegha2 | 0:e0131e671ea0 | 86 | UsDistSens(PinName pinTrigger, PinName pinEcho); |
hollegha2 | 0:e0131e671ea0 | 87 | void StartMeas(); |
hollegha2 | 0:e0131e671ea0 | 88 | private: |
hollegha2 | 0:e0131e671ea0 | 89 | void RisingISR(); |
hollegha2 | 0:e0131e671ea0 | 90 | void FallingISR(); |
hollegha2 | 0:e0131e671ea0 | 91 | private: |
hollegha2 | 0:e0131e671ea0 | 92 | DigitalOut trigger; |
hollegha2 | 0:e0131e671ea0 | 93 | InterruptIn echo; |
hollegha2 | 0:e0131e671ea0 | 94 | Timer stw; |
hollegha2 | 0:e0131e671ea0 | 95 | public: |
hollegha2 | 0:e0131e671ea0 | 96 | int dist; |
hollegha2 | 0:e0131e671ea0 | 97 | float distCM; |
hollegha2 | 0:e0131e671ea0 | 98 | }; |
hollegha2 | 0:e0131e671ea0 | 99 | |
hollegha2 | 0:e0131e671ea0 | 100 | #endif |