Umschalten der Leuchtdauer mittels Knöpfen...
Dependencies: mbed
main.cpp
- Committer:
- Sneid
- Date:
- 2014-06-05
- Revision:
- 1:85d5fcea9bc4
- Parent:
- 0:ca528b525f28
File content as of revision 1:85d5fcea9bc4:
#include "mbed.h" DigitalOut LedOut(P1_18); DigitalIn BtnIn1(p8); DigitalIn BtnIn2(p14); InterruptIn IrBtn1(p8); InterruptIn IrBtn2(p14); DigitalOut PeepOut(P2_5); #define PEEP 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, PeepPwm=0; //timer 0 bis 100 fuer Led PWM int Btn1=0, Btn2=0, Led=0, Peep=0; //Abgreifen der Physischen Eingaenge int hell=50, freq=700; //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==20000); //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)); //Hier folgt der frequenzveraenderer, leider noch nicht fertig #ifdef PEEP freq = freq + (Btn2 && !LedSw && jetzt && (freq<1000)); freq = freq - (Btn1 && !LedSw && jetzt && (freq>400)); #endif /* * 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); #ifdef PEEP /* * Bullshit * hier folgt der Peeper und aller anderer Misst */ PeepPwm++; PeepPwm = LedPwm * !(freq==LedPwm); Peep = !LedSw && (LedPwm<hell); PeepOut=Peep; #endif //zuweisen auf LED Output LedOut=Led; wait_us(1); } }