Blinker

Dependencies:   TextLCD mbed MMA8451Q

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?

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