Ultraschall Test Geschwindigkeitsregelung

Fork of BertlLib by michael hollegha

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?

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