Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: TextLCD mbed MMA8451Q
Blinker.cpp
- Committer:
- Klaus89
- Date:
- 2014-06-26
- Revision:
- 12:601b595e68a0
- Parent:
- 11:f3de201aace6
- Child:
- 13:243a94718e51
File content as of revision 12:601b595e68a0:
//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 Blinker_L_Led(PTD1); // Digitaler Ausgang für die Blinker links
//DigitalOut Blinker_R_Led(PTD3); // Digitaler Ausgang für die 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 RIGHT_KEY 0
#define UP_KEY 1
#define DOWN_KEY 2
#define LEFT_KEY 3
#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 buttonState = 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)
{
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()
{
buttonState = NO_KEY;
lcd.cls();
wait(z);
lcd.locate(0,0);
lcd.printf("<--");
lcd.locate(1,1);
lcd.printf("Blinker Links");
buttonState = read_KEY();
wait(z);
if (buttonState == LEFT_KEY) // Einstieg Dauerblinker
{ while(1)
{
/*
buttonState = read_KEY();
wait(z);
if (buttonState == DOWN_KEY) // Abbruchbedingung Dauerblinker
{ Programmwahl();}*/
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 = 3;
for (x=3; x>=1; x--)
{
lcd.cls();
wait(z);
lcd.locate(15,0);
lcd.printf("%d%",x);
lcd.locate(0,0);
lcd.printf("<--");
lcd.locate(1,1);
lcd.printf("Komfortblinker");
wait(z);
}
}
Programmwahl(); // Zurück zur 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 < 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...
}
//Ende