Blinker

Dependencies:   TextLCD mbed MMA8451Q

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?

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