Blinker
Dependencies: TextLCD mbed MMA8451Q
Diff: Blinker.cpp
- Revision:
- 11:f3de201aace6
- Parent:
- 10:31d4d8104813
- Child:
- 12:601b595e68a0
diff -r 31d4d8104813 -r f3de201aace6 Blinker.cpp --- a/Blinker.cpp Tue Jun 24 09:48:22 2014 +0000 +++ b/Blinker.cpp Tue Jun 24 15:20:51 2014 +0000 @@ -11,31 +11,31 @@ DigitalOut myLED_R(PTB18); // rote LED auf dem Board //DigitalOut BlinkerL(PTE0); // Digitaler Ausgang für die Blinker links //DigitalOut BlinkerR(PTE1); // Digitaler Ausgang für die Blinker rechts -//AnalogIn TasterS(PTB3); // Taster zum Rückstelen der Blinker -//AnalogIn TasterL(PTB2); // Taster für Blinker links -//AnalogIn TasterR(PTB1); // Taster für Blinker rechts + AnalogIn KEYS(PTB0); //Analog In um die Spannung an PTB0 zu bestimmen und die Buttons zu erkennen TextLCD lcd(PTA13, PTD5, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2); //Konfiguration des LCD-Keypad-Schields mit Pins: rs, e, d4, d5, d6, d7 -#define NO_KEY 0 //definiert die Keys des LCD Shields +#define RIGHT_KEY 0 #define UP_KEY 1 #define DOWN_KEY 2 #define LEFT_KEY 3 -#define RIGHT_KEY 4 -#define SELECT_KEY 5 +#define SELECT_KEY 4 +#define NO_KEY 5 //definiert die Keys des LCD Shields //Funktions Prototypen void Programmwahl(); int read_KEY(); float z = 0.4; //Rythmus der Blinker -int buttenState = 0; +int buttonState = 0; void BlinkerL(); //void BlinkerR(); //void BlinkerW(); + int main() { + myLED_G= 1; myLED_R= 1; lcd.cls(); @@ -51,89 +51,71 @@ { lcd.cls(); lcd.locate(4,1); - lcd.printf("smartBIG"); + lcd.printf("smartBIG"); while(1) { - buttenState = read_KEY(); - if (buttenState == LEFT_KEY) + wait(0.05); // Wichtig!!! Richtige Zuordnung der Buttons + buttonState = read_KEY(); + if (buttonState == LEFT_KEY) { BlinkerL(); } } } - +// Programm für die Ansteuerung der linken Blinker void BlinkerL() { - buttenState = 0; + buttonState = NO_KEY; lcd.cls(); wait(z); - lcd.locate(1,0); + lcd.locate(0,0); lcd.printf("<--"); - lcd.locate(0,1); - lcd.printf("Blinker Links"); + lcd.locate(1,1); + lcd.printf("Blinker Links"); + buttonState = read_KEY(); wait(z); - buttenState = read_KEY(); - - if (buttenState == LEFT_KEY) + + if (buttonState == LEFT_KEY) // Einstieg Dauerblinker + { while(1) { - SchleifeR: - lcd.cls(); - wait(z); - lcd.locate(1,0); - lcd.printf("<--"); - lcd.locate(0,1); - lcd.printf("Blinker Links"); - - if (buttenState == DOWN_KEY) //Abschaltbedingung - {Programmwahl();} - else {goto SchleifeR;} - } + buttonState = NO_KEY; + lcd.cls(); + wait(z); + lcd.locate(0,0); + lcd.printf("<--"); + lcd.locate(2,1); + lcd.printf("Dauerblinker"); + buttonState = read_KEY(); + wait(z); + if (buttonState == DOWN_KEY) // Abbruchbedingung Dauerblinker + { Programmwahl();} + //if (buttonState == UP_KEY) // Einstieg Warnblinker + //{ BlinkerW();} + } + } else //Kompfortblinker { - char x = 5; - for (x=5; x>=1; x--) + char x = 3; + for (x=3; x>=1; x--) { lcd.cls(); wait(z); lcd.locate(15,0); lcd.printf("%d%",x); - lcd.locate(1,0); + lcd.locate(0,0); lcd.printf("<--"); lcd.locate(1,1); lcd.printf("Komfortblinker"); wait(z); } - Programmwahl(); } + Programmwahl(); // Zurück zur Programmwahl } - - - - /* - - char x = 5; - for (x=5; x>=1; x--) - { - lcd.cls(); - wait(z); - lcd.locate(15,0); - lcd.printf("%d%",x); - lcd.locate(1,0); - lcd.printf("<--"); - lcd.locate(1,1); - lcd.printf("Komfortblinker"); - wait(z); - } - Programmwahl(); -} - -*/ - int read_KEY() //Bestimmt, welche Taste gerade gedrückt wird { @@ -144,96 +126,11 @@ if (adc_key_in > 65000) {return NO_KEY;} if (adc_key_in < 50) {return RIGHT_KEY;} //if (adc_key_in < 790) {return SELECT_KEY;} - if (adc_key_in < 15500) {return UP_KEY;} - if (adc_key_in < 34600) {return DOWN_KEY;} - if (adc_key_in < 54000) {return LEFT_KEY;} + if (adc_key_in < 15000) {return UP_KEY;} + if (adc_key_in < 35000) {return DOWN_KEY;} + if (adc_key_in < 53000) {return LEFT_KEY;} return NO_KEY; //when no value readable, also return NO_KEY... } - - -/* - -int main() -{ - char x = 5; - while(1) - { - for (x=5; x>=0; x--){ - lcd.cls(); - wait(0.6); - lcd.locate(1,0); - lcd.printf("%d%",x); - lcd.locate(1,1); - lcd.printf("Komfortblinker"); - wait(0.6); - }} -myLED_G= 1; -anfang: -//int x = 0; //Zählvariable für Blinker-Schleife -float z = 0.4; - - -while(1) -{ -if (TasterR > 0.6) - { - - BlinkerR= 1; - myLED_G= 0; - wait(z); - BlinkerR= 0; - myLED_G= 1; - wait(z); - if (TasterR > 0.6) - { - SchleifeR: - BlinkerR= 1; - myLED_G= 0; - wait(z); - BlinkerR= 0; - myLED_G= 1; - wait(z); - if (TasterS > 0.6) //Abschaltbedingung - {goto anfang;} - else { - goto SchleifeR; } - } - else //Kompfortblinker - {for (x=0; x<=2; x++) - {BlinkerR= 1; - myLED_G= 0; - wait(z); - BlinkerR= 0; - myLED_G= 1; - wait(z); - }} - - - } -else - { - goto anfang; - } -} -} - - -int read_LCD_KEYS() //Bestimmt, welche Taste gerade gedrückt wird -{ - int adc_key_in = 0; - 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]. - // watch approching values for pushbutton and set table below - // add approx 500 for safety - if (adc_key_in > 65000) {return NO_KEY;} - if (adc_key_in < 50) {return RIGHT_KEY;} - //if (adc_key_in < 790) {return SELECT_KEY;} - if (adc_key_in < 15500) {return UP_KEY;} - if (adc_key_in < 34600) {return DOWN_KEY;} - if (adc_key_in < 54000) {return LEFT_KEY;} - - return NO_KEY; //when no value readable, also return NO_KEY... -} -*/ //Ende \ No newline at end of file