Blinker
Dependencies: TextLCD mbed MMA8451Q
Blinker.cpp@8:6a4e86d75a00, 2014-06-23 (annotated)
- Committer:
- Klaus89
- Date:
- Mon Jun 23 10:42:22 2014 +0000
- Revision:
- 8:6a4e86d75a00
- Parent:
- 7:c1d05f2830fb
- Child:
- 9:9ff473e9dfea
LCD integriert
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Daniel90 | 3:05c8449bc489 | 1 | //Multifunktionsblinker |
Daniel90 | 3:05c8449bc489 | 2 | //Hardware: Freescale FRDM KL25Z & SaintSmart LCD Keypad Shield |
Daniel90 | 3:05c8449bc489 | 3 | //Copyright: Andre Ehwein, Marcel Berrang, Daniel Knopp |
Daniel90 | 3:05c8449bc489 | 4 | |
Daniel90 | 3:05c8449bc489 | 5 | #include "mbed.h" //common library für mbed |
Daniel90 | 4:a0a518132c23 | 6 | #include "TextLCD.h" //library für den LCD Shield |
Daniel90 | 4:a0a518132c23 | 7 | #include "TSISensor.h" //library für den TSi Sensor Idee: Helligkeit der Blinker LEDs einstellen |
Klaus89 | 8:6a4e86d75a00 | 8 | //#include "MMA8451Q.h" //library für den Beschleunigungssensor |
Daniel90 | 4:a0a518132c23 | 9 | |
Berrng | 7:c1d05f2830fb | 10 | AnalogIn KEYS(PTB0); //Analog In um die Spannung an PTB0 zu bestimmen und die Buttons zu erkennen |
Berrng | 7:c1d05f2830fb | 11 | DigitalOut myLED_G(PTB19); //grüne LED Idee: stellt die grünen blinkenden Pfeile im Auto da |
Berrng | 7:c1d05f2830fb | 12 | DigitalOut BlinkerL(PTE0); // Digitaler Ausgang für die Blinker links |
Berrng | 7:c1d05f2830fb | 13 | DigitalOut BlinkerR(PTE1); // Digitaler Ausgang für die Blinker rechts |
Klaus89 | 8:6a4e86d75a00 | 14 | AnalogIn TasterS(PTB3); // Taster zum Rückstelen der Blinker |
Berrng | 7:c1d05f2830fb | 15 | AnalogIn TasterL(PTB2); // Taster für Blinker links |
Berrng | 7:c1d05f2830fb | 16 | AnalogIn TasterR(PTB1); // Taster für Blinker rechts |
Klaus89 | 8:6a4e86d75a00 | 17 | TextLCD lcd(PTA13, PTD5, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2); |
Berrng | 7:c1d05f2830fb | 18 | |
Berrng | 7:c1d05f2830fb | 19 | |
Berrng | 7:c1d05f2830fb | 20 | int main() |
Berrng | 7:c1d05f2830fb | 21 | { |
Klaus89 | 8:6a4e86d75a00 | 22 | lcd.cls(); |
Klaus89 | 8:6a4e86d75a00 | 23 | lcd.printf("-->"); |
Klaus89 | 8:6a4e86d75a00 | 24 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 25 | anfang: |
Berrng | 7:c1d05f2830fb | 26 | int x = 0; //Zählvariable für Blinker-Schleife |
Berrng | 7:c1d05f2830fb | 27 | float z = 0.4; |
Klaus89 | 8:6a4e86d75a00 | 28 | |
Berrng | 7:c1d05f2830fb | 29 | |
Berrng | 7:c1d05f2830fb | 30 | while(1) |
Berrng | 7:c1d05f2830fb | 31 | { |
Klaus89 | 8:6a4e86d75a00 | 32 | if (TasterR > 0.6) |
Berrng | 7:c1d05f2830fb | 33 | { |
Berrng | 7:c1d05f2830fb | 34 | |
Berrng | 7:c1d05f2830fb | 35 | BlinkerR= 1; |
Berrng | 7:c1d05f2830fb | 36 | myLED_G= 0; |
Berrng | 7:c1d05f2830fb | 37 | wait(z); |
Berrng | 7:c1d05f2830fb | 38 | BlinkerR= 0; |
Berrng | 7:c1d05f2830fb | 39 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 40 | wait(z); |
Klaus89 | 8:6a4e86d75a00 | 41 | if (TasterR > 0.6) |
Berrng | 7:c1d05f2830fb | 42 | { |
Berrng | 7:c1d05f2830fb | 43 | SchleifeR: |
Berrng | 7:c1d05f2830fb | 44 | BlinkerR= 1; |
Berrng | 7:c1d05f2830fb | 45 | myLED_G= 0; |
Berrng | 7:c1d05f2830fb | 46 | wait(z); |
Berrng | 7:c1d05f2830fb | 47 | BlinkerR= 0; |
Berrng | 7:c1d05f2830fb | 48 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 49 | wait(z); |
Klaus89 | 8:6a4e86d75a00 | 50 | if (TasterS > 0.6) //Abschaltbedingung |
Berrng | 7:c1d05f2830fb | 51 | {goto anfang;} |
Berrng | 7:c1d05f2830fb | 52 | else { |
Berrng | 7:c1d05f2830fb | 53 | goto SchleifeR; } |
Berrng | 7:c1d05f2830fb | 54 | } |
Berrng | 7:c1d05f2830fb | 55 | else //Kompfortblinker |
Berrng | 7:c1d05f2830fb | 56 | {for (x=0; x<=2; x++) |
Berrng | 7:c1d05f2830fb | 57 | {BlinkerR= 1; |
Berrng | 7:c1d05f2830fb | 58 | myLED_G= 0; |
Berrng | 7:c1d05f2830fb | 59 | wait(z); |
Berrng | 7:c1d05f2830fb | 60 | BlinkerR= 0; |
Berrng | 7:c1d05f2830fb | 61 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 62 | wait(z); |
Berrng | 7:c1d05f2830fb | 63 | }} |
Berrng | 7:c1d05f2830fb | 64 | |
Berrng | 7:c1d05f2830fb | 65 | |
Berrng | 7:c1d05f2830fb | 66 | } |
Berrng | 7:c1d05f2830fb | 67 | else |
Berrng | 7:c1d05f2830fb | 68 | { |
Berrng | 7:c1d05f2830fb | 69 | goto anfang; |
Berrng | 7:c1d05f2830fb | 70 | } |
Berrng | 7:c1d05f2830fb | 71 | } |
Berrng | 7:c1d05f2830fb | 72 | } |
Berrng | 7:c1d05f2830fb | 73 | |
Berrng | 7:c1d05f2830fb | 74 | |
Daniel90 | 4:a0a518132c23 | 75 | |
Daniel90 | 4:a0a518132c23 | 76 | #define NO_KEY 0 //definiert die Keys des LCD Shields |
Daniel90 | 4:a0a518132c23 | 77 | #define UP_KEY 1 |
Daniel90 | 4:a0a518132c23 | 78 | #define DOWN_KEY 2 |
Daniel90 | 4:a0a518132c23 | 79 | #define LEFT_KEY 3 |
Daniel90 | 4:a0a518132c23 | 80 | #define RIGHT_KEY 4 |
Daniel90 | 4:a0a518132c23 | 81 | #define SELECT_KEY 5 |
Daniel90 | 3:05c8449bc489 | 82 | |
Klaus89 | 8:6a4e86d75a00 | 83 | //TextLCD lcd(PTA13, PTD5, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2); //Konfiguration für das LCD Shield |
Berrng | 7:c1d05f2830fb | 84 | int read_LCD_KEYS() //Bestimmt, welche Taste gerade gedrückt wird |
Berrng | 7:c1d05f2830fb | 85 | // lcd.cls(); |
Daniel90 | 4:a0a518132c23 | 86 | { |
Daniel90 | 4:a0a518132c23 | 87 | int adc_key_in = 0; |
Berrng | 7:c1d05f2830fb | 88 | adc_key_in = KEYS.read_u16 (); // read the value from the sensor //Read the input voltage, represented as an unsigned short in the range [0x0, 0xFFFF]. |
Berrng | 7:c1d05f2830fb | 89 | // watch approching values for pushbutton and set table below |
Berrng | 7:c1d05f2830fb | 90 | // add approx 500 for safety |
Daniel90 | 4:a0a518132c23 | 91 | if (adc_key_in > 65000) {return NO_KEY;} |
Daniel90 | 4:a0a518132c23 | 92 | if (adc_key_in < 50) {return RIGHT_KEY;} |
Daniel90 | 4:a0a518132c23 | 93 | //if (adc_key_in < 790) {return SELECT_KEY;} |
Daniel90 | 4:a0a518132c23 | 94 | if (adc_key_in < 15500) {return UP_KEY;} |
Daniel90 | 4:a0a518132c23 | 95 | if (adc_key_in < 34600) {return DOWN_KEY;} |
Daniel90 | 4:a0a518132c23 | 96 | if (adc_key_in < 54000) {return LEFT_KEY;} |
Daniel90 | 4:a0a518132c23 | 97 | |
Daniel90 | 4:a0a518132c23 | 98 | return NO_KEY; //when no value readable, also return NO_KEY... |
Daniel90 | 4:a0a518132c23 | 99 | } |
Daniel90 | 3:05c8449bc489 | 100 | //Ende |