2020 Abend Lab

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?

UserRevisionLine numberNew 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