Umschalten der Leuchtdauer mittels Knöpfen...

Dependencies:   mbed

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