Umschalten der Leuchtdauer mittels Knöpfen...
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:ca528b525f28
- Child:
- 1:85d5fcea9bc4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 04 21:13:08 2014 +0000 @@ -0,0 +1,82 @@ +#include "mbed.h" + +DigitalOut LedOut(P1_18); +DigitalIn BtnIn1(p8); +DigitalIn BtnIn2(p14); +InterruptIn IrBtn1(p8); +InterruptIn IrBtn2(p14); + +int jetzt=0; //schalter für alle 4 Sekunden +int BtnCheck=1; //Sicherung gegen Umschalter an-aus + +void BtnDown() +{ + jetzt=1; +} + +void BtnUp() +{ + BtnCheck=1; +} + +int main() +{ + IrBtn1.fall(&BtnDown); + IrBtn2.fall(&BtnDown); + IrBtn1.rise(&BtnUp); + IrBtn2.rise(&BtnUp); + + int LedSw=0; //Switch welches die LED aus schaltet und veraenderungen an der Helligkeitsvariablen verhindert + int count=0; //timer absolut + int LedPwm=0; //timer 0 bis 100 fuer Led PWM + int Btn1=0, Btn2=0, Led=0; //Abgreifen der Physischen Eingaenge + int hell=50; //Helligkeitsvariable + + + while(1) { + + +//Auslesen der BTN Inputs + Btn1 = !BtnIn1; + Btn2 = !BtnIn2; + + /* + * Switch + * Led und Helliugkeits-steuerung An-Aus Schalter + */ + if (Btn1 && Btn2 && BtnCheck) { + BtnCheck= 0; //BtnCheck Variable muss in einem Interrupt BtnUp wieder auf 1 gesetzt werden!!! + LedSw = !LedSw; + } + + /* + * 4 Sekunden timer + * Loest alle 4 Sekunden aus Um langsam die Helligkeitsstufen zu durchlaufen. + */ + count++; + jetzt = (count==4000); //jetzt Variable muss in einem Interrupt BtnDown wieder auf 1 gesetzt werden. + count = count * !(jetzt); + + /* + * Heller Dunkler + * Veraenderung der Helligkeitsvariablen + */ + hell = hell + (Btn2 && LedSw && jetzt && (hell<=99)); + hell = hell - (Btn1 && LedSw && jetzt && (hell>=1)); + + /* + * PWM Timer + * Timer von 0 bis 100 um die LED leuchten zu lassen. + * Die Led ist nur an wenn sie nicht via LedSw aus geschaltet ist und die Helligkeitsvariable groesser dem PWM Timer ist. + */ + LedPwm++; + LedPwm = LedPwm * !(100==LedPwm); + Led = LedSw && (LedPwm<hell); + +//zuweisen auf LED Output + LedOut=Led; + + wait_ms(1); + + } +} \ No newline at end of file