2020 Abend Lab
Bertl14.h@8:2f81517a2d7c, 2020-06-18 (annotated)
- Committer:
- hollegha3
- Date:
- Thu Jun 18 17:17:39 2020 +0000
- Revision:
- 8:2f81517a2d7c
- Parent:
- 7:20c3213c3ada
2020 Abend Lab
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 | 7:20c3213c3ada | 5 | // V 3.0 |
hollegha2 | 7:20c3213c3ada | 6 | |
hollegha2 | 7:20c3213c3ada | 7 | class Motor |
hollegha2 | 7:20c3213c3ada | 8 | { |
hollegha2 | 7:20c3213c3ada | 9 | public: |
hollegha2 | 7:20c3213c3ada | 10 | Motor(PinName pwm, PinName fwd, PinName rev); |
hollegha2 | 7:20c3213c3ada | 11 | void SetBrake(int aOnOff); |
hollegha2 | 7:20c3213c3ada | 12 | void SetPow(float aPow); |
hollegha2 | 7:20c3213c3ada | 13 | void SetPow2(float aPow); |
hollegha2 | 7:20c3213c3ada | 14 | protected: |
hollegha2 | 0:e0131e671ea0 | 15 | PwmOut _pwm; |
hollegha2 | 0:e0131e671ea0 | 16 | DigitalOut _fwd; |
hollegha2 | 0:e0131e671ea0 | 17 | DigitalOut _rev; |
hollegha2 | 7:20c3213c3ada | 18 | int16_t _running; |
hollegha2 | 0:e0131e671ea0 | 19 | }; |
hollegha2 | 0:e0131e671ea0 | 20 | |
hollegha2 | 7:20c3213c3ada | 21 | class BertlDrive : public Motor |
hollegha2 | 7:20c3213c3ada | 22 | { |
hollegha2 | 7:20c3213c3ada | 23 | public: |
hollegha2 | 7:20c3213c3ada | 24 | int16_t encCnt; |
hollegha2 | 7:20c3213c3ada | 25 | public: |
hollegha2 | 7:20c3213c3ada | 26 | BertlDrive(PinName pwm, PinName fwd, PinName rev, PinName encoder); |
hollegha2 | 7:20c3213c3ada | 27 | void Init(); |
hollegha2 | 7:20c3213c3ada | 28 | private: |
hollegha2 | 7:20c3213c3ada | 29 | void EncoderISR(); |
hollegha2 | 7:20c3213c3ada | 30 | InterruptIn _enc; |
hollegha2 | 0:e0131e671ea0 | 31 | }; |
hollegha2 | 0:e0131e671ea0 | 32 | |
hollegha2 | 0:e0131e671ea0 | 33 | |
hollegha2 | 0:e0131e671ea0 | 34 | const int BTN_FLL = 0x80; |
hollegha2 | 0:e0131e671ea0 | 35 | const int BTN_FL = 0x04; |
hollegha2 | 0:e0131e671ea0 | 36 | const int BTN_FM = 0x01; |
hollegha2 | 0:e0131e671ea0 | 37 | const int BTN_FR = 0x08; |
hollegha2 | 0:e0131e671ea0 | 38 | const int BTN_FRR = 0x40; |
hollegha2 | 0:e0131e671ea0 | 39 | const int BTN_BL = 0x10; |
hollegha2 | 0:e0131e671ea0 | 40 | const int BTN_BM = 0x02; |
hollegha2 | 0:e0131e671ea0 | 41 | const int BTN_BR = 0x20; |
hollegha2 | 0:e0131e671ea0 | 42 | |
hollegha2 | 0:e0131e671ea0 | 43 | const int LED_FL1 = 0x01; // white die vordere |
hollegha2 | 0:e0131e671ea0 | 44 | const int LED_FL2 = 0x02; // red die hintere |
hollegha2 | 0:e0131e671ea0 | 45 | const int LED_FR1 = 0x04; // white |
hollegha2 | 0:e0131e671ea0 | 46 | const int LED_FR2 = 0x08; // red |
hollegha2 | 0:e0131e671ea0 | 47 | const int LED_ALL_FRONT = 0x0F; |
hollegha2 | 0:e0131e671ea0 | 48 | |
hollegha2 | 0:e0131e671ea0 | 49 | const int LED_BL1 = 0x20; // red back left outher |
hollegha2 | 0:e0131e671ea0 | 50 | const int LED_BL2 = 0x10; // red back left inner |
hollegha2 | 0:e0131e671ea0 | 51 | const int LED_BR1 = 0x80; // red back right outher |
hollegha2 | 0:e0131e671ea0 | 52 | const int LED_BR2 = 0x40; // red back right inner |
hollegha2 | 0:e0131e671ea0 | 53 | const int LED_ALL_BACK = 0xF0; |
hollegha2 | 0:e0131e671ea0 | 54 | |
hollegha2 | 0:e0131e671ea0 | 55 | |
hollegha2 | 7:20c3213c3ada | 56 | class PortEx |
hollegha2 | 7:20c3213c3ada | 57 | { |
hollegha2 | 7:20c3213c3ada | 58 | public: |
hollegha2 | 7:20c3213c3ada | 59 | // Current State of Buttons is refreshed with ReadButtons() |
hollegha2 | 7:20c3213c3ada | 60 | int16_t btns; |
hollegha2 | 7:20c3213c3ada | 61 | uint8_t btnEvent; |
hollegha2 | 7:20c3213c3ada | 62 | uint8_t useISR; |
hollegha2 | 7:20c3213c3ada | 63 | public: |
hollegha2 | 7:20c3213c3ada | 64 | PortEx(); |
hollegha2 | 7:20c3213c3ada | 65 | void Init(); |
hollegha2 | 7:20c3213c3ada | 66 | |
hollegha2 | 7:20c3213c3ada | 67 | void SetLedPort(uint8_t aBitPattern); // NO local Bit-OR |
hollegha2 | 7:20c3213c3ada | 68 | void SetLeds(uint8_t aBitPattern); |
hollegha2 | 7:20c3213c3ada | 69 | void ToggleLeds(uint8_t aBitPattern); |
hollegha2 | 7:20c3213c3ada | 70 | void ClearLeds(); |
hollegha2 | 0:e0131e671ea0 | 71 | |
hollegha2 | 7:20c3213c3ada | 72 | void ReadButtons(); |
hollegha2 | 7:20c3213c3ada | 73 | void WaitUntilButtonPressed(); |
hollegha2 | 7:20c3213c3ada | 74 | void WaitUntilFrontButtonPressed(); |
hollegha2 | 7:20c3213c3ada | 75 | |
hollegha2 | 7:20c3213c3ada | 76 | bool IsButton(int aBitPattern) { |
hollegha2 | 7:20c3213c3ada | 77 | return btns & aBitPattern; |
hollegha2 | 7:20c3213c3ada | 78 | } |
hollegha2 | 7:20c3213c3ada | 79 | |
hollegha2 | 7:20c3213c3ada | 80 | bool IsAnyFrontButton() { |
hollegha2 | 7:20c3213c3ada | 81 | return btns & (BTN_FL|BTN_FM|BTN_FR); |
hollegha2 | 7:20c3213c3ada | 82 | } |
hollegha2 | 7:20c3213c3ada | 83 | |
hollegha2 | 7:20c3213c3ada | 84 | bool IsAnyBackButton() { |
hollegha2 | 7:20c3213c3ada | 85 | return btns & (BTN_BL|BTN_BM|BTN_BR); |
hollegha2 | 7:20c3213c3ada | 86 | } |
hollegha2 | 7:20c3213c3ada | 87 | private: |
hollegha2 | 7:20c3213c3ada | 88 | uint8_t _currLeds; |
hollegha2 | 7:20c3213c3ada | 89 | void p6ISR(); |
hollegha2 | 7:20c3213c3ada | 90 | I2C _i2c; |
hollegha2 | 7:20c3213c3ada | 91 | const int DEV = 0x40; |
hollegha2 | 7:20c3213c3ada | 92 | InterruptIn _p6Event; |
hollegha2 | 0:e0131e671ea0 | 93 | }; |
hollegha2 | 0:e0131e671ea0 | 94 | |
hollegha2 | 0:e0131e671ea0 | 95 | |
hollegha2 | 7:20c3213c3ada | 96 | class UsDistSens |
hollegha2 | 7:20c3213c3ada | 97 | { |
hollegha2 | 7:20c3213c3ada | 98 | public: |
hollegha2 | 7:20c3213c3ada | 99 | UsDistSens(PinName pinTrigger, PinName pinEcho); |
hollegha2 | 7:20c3213c3ada | 100 | void StartMeas(); |
hollegha2 | 7:20c3213c3ada | 101 | private: |
hollegha2 | 7:20c3213c3ada | 102 | void RisingISR(); |
hollegha2 | 7:20c3213c3ada | 103 | void FallingISR(); |
hollegha2 | 7:20c3213c3ada | 104 | private: |
hollegha2 | 7:20c3213c3ada | 105 | DigitalOut trigger; |
hollegha2 | 7:20c3213c3ada | 106 | InterruptIn echo; |
hollegha2 | 7:20c3213c3ada | 107 | Timer stw; |
hollegha2 | 7:20c3213c3ada | 108 | public: |
hollegha2 | 7:20c3213c3ada | 109 | int dist; |
hollegha2 | 7:20c3213c3ada | 110 | float distCM; |
hollegha2 | 0:e0131e671ea0 | 111 | }; |
hollegha2 | 0:e0131e671ea0 | 112 | |
hollegha2 | 2:16a5d3302ddb | 113 | #ifndef ANALOGIN_HL |
hollegha2 | 2:16a5d3302ddb | 114 | #define ANALOGIN_HL |
hollegha2 | 7:20c3213c3ada | 115 | class AnalogInHL : public AnalogIn |
hollegha2 | 7:20c3213c3ada | 116 | { |
hollegha2 | 7:20c3213c3ada | 117 | public: |
hollegha2 | 7:20c3213c3ada | 118 | AnalogInHL(PinName pin) : AnalogIn(pin) { } |
hollegha2 | 7:20c3213c3ada | 119 | int Read() { |
hollegha2 | 7:20c3213c3ada | 120 | return read_u16()>>6; |
hollegha2 | 7:20c3213c3ada | 121 | } |
hollegha2 | 2:16a5d3302ddb | 122 | }; |
hollegha2 | 0:e0131e671ea0 | 123 | #endif |
hollegha2 | 2:16a5d3302ddb | 124 | |
hollegha2 | 2:16a5d3302ddb | 125 | #endif |
hollegha2 | 2:16a5d3302ddb | 126 | |
hollegha2 | 2:16a5d3302ddb | 127 | |
hollegha2 | 2:16a5d3302ddb | 128 | |
hollegha2 | 2:16a5d3302ddb | 129 | |
hollegha2 | 2:16a5d3302ddb | 130 | |
hollegha2 | 2:16a5d3302ddb | 131 | |
hollegha2 | 2:16a5d3302ddb | 132 | |
hollegha2 | 2:16a5d3302ddb | 133 | |
hollegha2 | 2:16a5d3302ddb | 134 | |
hollegha2 | 2:16a5d3302ddb | 135 | |
hollegha2 | 2:16a5d3302ddb | 136 | |
hollegha2 | 2:16a5d3302ddb | 137 | |
hollegha2 | 2:16a5d3302ddb | 138 | |
hollegha2 | 2:16a5d3302ddb | 139 | |
hollegha2 | 2:16a5d3302ddb | 140 | |
hollegha2 | 2:16a5d3302ddb | 141 | |
hollegha2 | 2:16a5d3302ddb | 142 | |
hollegha2 | 2:16a5d3302ddb | 143 | |
hollegha2 | 2:16a5d3302ddb | 144 | |
hollegha2 | 2:16a5d3302ddb | 145 | |
hollegha2 | 2:16a5d3302ddb | 146 | |
hollegha2 | 2:16a5d3302ddb | 147 | |
hollegha2 | 2:16a5d3302ddb | 148 |