Blinker
Dependencies: TextLCD mbed MMA8451Q
Blinker.cpp@9:9ff473e9dfea, 2014-06-23 (annotated)
- Committer:
- Klaus89
- Date:
- Mon Jun 23 11:17:06 2014 +0000
- Revision:
- 9:9ff473e9dfea
- Parent:
- 8:6a4e86d75a00
- Child:
- 10:31d4d8104813
LCD mit Z?hlschleife
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 | 9:9ff473e9dfea | 22 | char x = 5; |
Klaus89 | 9:9ff473e9dfea | 23 | while(1) |
Klaus89 | 9:9ff473e9dfea | 24 | { |
Klaus89 | 9:9ff473e9dfea | 25 | for (x=5; x>=0; x--){ |
Klaus89 | 9:9ff473e9dfea | 26 | lcd.cls(); |
Klaus89 | 9:9ff473e9dfea | 27 | wait(0.6); |
Klaus89 | 9:9ff473e9dfea | 28 | lcd.locate(1,0); |
Klaus89 | 9:9ff473e9dfea | 29 | lcd.printf("%d%",x); |
Klaus89 | 9:9ff473e9dfea | 30 | lcd.locate(1,1); |
Klaus89 | 9:9ff473e9dfea | 31 | lcd.printf("Komfortblinker"); |
Klaus89 | 9:9ff473e9dfea | 32 | wait(0.6); |
Klaus89 | 9:9ff473e9dfea | 33 | }} |
Klaus89 | 8:6a4e86d75a00 | 34 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 35 | anfang: |
Klaus89 | 9:9ff473e9dfea | 36 | //int x = 0; //Zählvariable für Blinker-Schleife |
Berrng | 7:c1d05f2830fb | 37 | float z = 0.4; |
Klaus89 | 8:6a4e86d75a00 | 38 | |
Berrng | 7:c1d05f2830fb | 39 | |
Berrng | 7:c1d05f2830fb | 40 | while(1) |
Berrng | 7:c1d05f2830fb | 41 | { |
Klaus89 | 8:6a4e86d75a00 | 42 | if (TasterR > 0.6) |
Berrng | 7:c1d05f2830fb | 43 | { |
Berrng | 7:c1d05f2830fb | 44 | |
Berrng | 7:c1d05f2830fb | 45 | BlinkerR= 1; |
Berrng | 7:c1d05f2830fb | 46 | myLED_G= 0; |
Berrng | 7:c1d05f2830fb | 47 | wait(z); |
Berrng | 7:c1d05f2830fb | 48 | BlinkerR= 0; |
Berrng | 7:c1d05f2830fb | 49 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 50 | wait(z); |
Klaus89 | 8:6a4e86d75a00 | 51 | if (TasterR > 0.6) |
Berrng | 7:c1d05f2830fb | 52 | { |
Berrng | 7:c1d05f2830fb | 53 | SchleifeR: |
Berrng | 7:c1d05f2830fb | 54 | BlinkerR= 1; |
Berrng | 7:c1d05f2830fb | 55 | myLED_G= 0; |
Berrng | 7:c1d05f2830fb | 56 | wait(z); |
Berrng | 7:c1d05f2830fb | 57 | BlinkerR= 0; |
Berrng | 7:c1d05f2830fb | 58 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 59 | wait(z); |
Klaus89 | 8:6a4e86d75a00 | 60 | if (TasterS > 0.6) //Abschaltbedingung |
Berrng | 7:c1d05f2830fb | 61 | {goto anfang;} |
Berrng | 7:c1d05f2830fb | 62 | else { |
Berrng | 7:c1d05f2830fb | 63 | goto SchleifeR; } |
Berrng | 7:c1d05f2830fb | 64 | } |
Berrng | 7:c1d05f2830fb | 65 | else //Kompfortblinker |
Berrng | 7:c1d05f2830fb | 66 | {for (x=0; x<=2; x++) |
Berrng | 7:c1d05f2830fb | 67 | {BlinkerR= 1; |
Berrng | 7:c1d05f2830fb | 68 | myLED_G= 0; |
Berrng | 7:c1d05f2830fb | 69 | wait(z); |
Berrng | 7:c1d05f2830fb | 70 | BlinkerR= 0; |
Berrng | 7:c1d05f2830fb | 71 | myLED_G= 1; |
Berrng | 7:c1d05f2830fb | 72 | wait(z); |
Berrng | 7:c1d05f2830fb | 73 | }} |
Berrng | 7:c1d05f2830fb | 74 | |
Berrng | 7:c1d05f2830fb | 75 | |
Berrng | 7:c1d05f2830fb | 76 | } |
Berrng | 7:c1d05f2830fb | 77 | else |
Berrng | 7:c1d05f2830fb | 78 | { |
Berrng | 7:c1d05f2830fb | 79 | goto anfang; |
Berrng | 7:c1d05f2830fb | 80 | } |
Berrng | 7:c1d05f2830fb | 81 | } |
Berrng | 7:c1d05f2830fb | 82 | } |
Berrng | 7:c1d05f2830fb | 83 | |
Berrng | 7:c1d05f2830fb | 84 | |
Daniel90 | 4:a0a518132c23 | 85 | |
Daniel90 | 4:a0a518132c23 | 86 | #define NO_KEY 0 //definiert die Keys des LCD Shields |
Daniel90 | 4:a0a518132c23 | 87 | #define UP_KEY 1 |
Daniel90 | 4:a0a518132c23 | 88 | #define DOWN_KEY 2 |
Daniel90 | 4:a0a518132c23 | 89 | #define LEFT_KEY 3 |
Daniel90 | 4:a0a518132c23 | 90 | #define RIGHT_KEY 4 |
Daniel90 | 4:a0a518132c23 | 91 | #define SELECT_KEY 5 |
Daniel90 | 3:05c8449bc489 | 92 | |
Klaus89 | 8:6a4e86d75a00 | 93 | //TextLCD lcd(PTA13, PTD5, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2); //Konfiguration für das LCD Shield |
Berrng | 7:c1d05f2830fb | 94 | int read_LCD_KEYS() //Bestimmt, welche Taste gerade gedrückt wird |
Berrng | 7:c1d05f2830fb | 95 | // lcd.cls(); |
Daniel90 | 4:a0a518132c23 | 96 | { |
Daniel90 | 4:a0a518132c23 | 97 | int adc_key_in = 0; |
Berrng | 7:c1d05f2830fb | 98 | 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 | 99 | // watch approching values for pushbutton and set table below |
Berrng | 7:c1d05f2830fb | 100 | // add approx 500 for safety |
Daniel90 | 4:a0a518132c23 | 101 | if (adc_key_in > 65000) {return NO_KEY;} |
Daniel90 | 4:a0a518132c23 | 102 | if (adc_key_in < 50) {return RIGHT_KEY;} |
Daniel90 | 4:a0a518132c23 | 103 | //if (adc_key_in < 790) {return SELECT_KEY;} |
Daniel90 | 4:a0a518132c23 | 104 | if (adc_key_in < 15500) {return UP_KEY;} |
Daniel90 | 4:a0a518132c23 | 105 | if (adc_key_in < 34600) {return DOWN_KEY;} |
Daniel90 | 4:a0a518132c23 | 106 | if (adc_key_in < 54000) {return LEFT_KEY;} |
Daniel90 | 4:a0a518132c23 | 107 | |
Daniel90 | 4:a0a518132c23 | 108 | return NO_KEY; //when no value readable, also return NO_KEY... |
Daniel90 | 4:a0a518132c23 | 109 | } |
Daniel90 | 3:05c8449bc489 | 110 | //Ende |