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