Blinker
Dependencies: TextLCD mbed MMA8451Q
Blinker.cpp
- Committer:
- Berrng
- Date:
- 2014-06-24
- Revision:
- 10:31d4d8104813
- Parent:
- 9:9ff473e9dfea
- Child:
- 11:f3de201aace6
File content as of revision 10:31d4d8104813:
//Multifunktionsblinker //Hardware: Freescale FRDM KL25Z & SaintSmart LCD Keypad Shield //Copyright: Andre Ehwein, Marcel Berrang, Daniel Knopp #include "mbed.h" //common library für mbed #include "TextLCD.h" //library für den LCD Shield #include "TSISensor.h" //library für den TSi Sensor Idee: Helligkeit der Blinker LEDs einstellen DigitalOut myLED_G(PTB19); // grüne LED auf dem Board 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 UP_KEY 1 #define DOWN_KEY 2 #define LEFT_KEY 3 #define RIGHT_KEY 4 #define SELECT_KEY 5 //Funktions Prototypen void Programmwahl(); int read_KEY(); float z = 0.4; //Rythmus der Blinker int buttenState = 0; void BlinkerL(); //void BlinkerR(); //void BlinkerW(); int main() { myLED_G= 1; myLED_R= 1; lcd.cls(); lcd.locate(4,1); lcd.printf("smartBIG"); Programmwahl(); } void Programmwahl() { lcd.cls(); lcd.locate(4,1); lcd.printf("smartBIG"); while(1) { buttenState = read_KEY(); if (buttenState == LEFT_KEY) { BlinkerL(); } } } void BlinkerL() { buttenState = 0; lcd.cls(); wait(z); lcd.locate(1,0); lcd.printf("<--"); lcd.locate(0,1); lcd.printf("Blinker Links"); wait(z); buttenState = read_KEY(); if (buttenState == LEFT_KEY) { 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;} } else //Kompfortblinker { 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(); } } /* 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 { 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... } /* 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