Ultraschall Test Geschwindigkeitsregelung

Fork of BertlLib by michael hollegha

Committer:
hollegha2
Date:
Fri Apr 25 18:57:23 2014 +0000
Revision:
1:cb66be3bb78f
Parent:
0:e0131e671ea0
Rev2

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