nein

Dependencies:   Debouncer DigitDisplay Led-libary PCF8563 mbed

Fork of WS_7_Seg_mit_LM1635 by Sophia Hölzl

Files at this revision

API Documentation at this revision

Comitter:
sophia
Date:
Mon May 30 09:42:24 2016 +0000
Parent:
1:838565907c81
Commit message:
Haupt

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Apr 29 06:32:42 2016 +0000
+++ b/main.cpp	Mon May 30 09:42:24 2016 +0000
@@ -8,7 +8,7 @@
 #define rgB (0x0000ff)  //Blau
 #define RgB (0x00ffff)  //Violet
 #define rGB (0xff00ff)  //Türkis
-#define RGb (0xffff00)  //Rot-Grün
+#define RGb (0xffff00)  //Gelb
 #define RGB (0xffffff)  //Weiß
 #define rgb (0x000000)  //Aus
 //halbe Helligkeit
@@ -17,10 +17,10 @@
 #define hrgB (0x00000f)  //Blau
 #define hRgB (0x000f0f)  //Violet
 #define hrGB (0x0f000f)  //Türkis
-#define hRGb (0x0f0f00)  //Rot-Grün
+#define hRGb (0x0f0f00)  //Gelb
 #define hRGB (0x0f0f0f)  //Weiß
 
- 
+Ticker UhrTick;
 Timeout timer;
 PCF8563 rtc;
 
@@ -28,7 +28,7 @@
 DigitalOut Led2(LED2);
 DigitalOut Led3(LED3);
 DigitalOut Led4(LED4);
- 
+
 InterruptIn Taster1(p17);
 InterruptIn Taster2(p18);
 InterruptIn Taster3(p19);
@@ -39,7 +39,7 @@
 InterruptIn InternTaster4(P0_15);
 
 PwmOut Summer(p6);
- 
+
 LedOut RGBStripe(p25);
 //                       (CLK, I/O)
 DigitDisplay TimerDisplay(p21, p22);
@@ -47,15 +47,13 @@
 DigitDisplay UhrDisplay(p23, p24);
 uint8_t hour, minute, sec;
 
-int zahl =02;  // Schmiedi mach was mit den Tastern, dass man die Zahl einstellen kann
+int zahl =01;  // Schmiedi mach was mit den Tastern, dass man die Zahl einstellen kann
 int second = 00;
 int t;
 int h;
 int z;
 int e;
 bool colon = true;
-int vergleich=(zahl*60);
-
 
 int color;
 
@@ -69,17 +67,24 @@
     e= (second-(z*10))/1;
 }
 
-void ausgabe()
+void ausgabe(int zahlzurzeit, int vergleich)
 {
     TimerDisplay.write(0, t);
     TimerDisplay.write(1, h);
     TimerDisplay.write(2, z);
     TimerDisplay.write(3, e);
-    pc.printf("\n %d %d : %d %d"  ,t, h ,z,e);
-
+    //pc.printf("\n %d %d : %d %d"  ,t, h ,z,e);
+    pc.printf("Zahl: %d, Vergleich: %d", zahlzurzeit, vergleich);
 }
 
-
+void SummerOut()
+{
+    // specify period first, then everything else
+    Summer.period(0.001f);  // 4 second period
+    Summer.pulsewidth(0.0004); // 2 second pulse (on)
+    // led flashing
+    //while(1);
+}
 
 
 
@@ -87,9 +92,11 @@
 {
     __disable_irq();            //Interrupt deaktivieren
 
+
     for(int r=0; r<=10; r++)
         RGBStripe.WriteLed(color);  //Farbe rausschreiben
 
+
     __enable_irq();             //Interrupt reaktivieren
 }
 
@@ -98,63 +105,67 @@
     hour = rtc.read(HOURS);
     minute = rtc.read(MINUTES);
     sec = rtc.read(SECONDS);
+    /*
+        UhrDisplay.write(0, (minute >> 4)- 8);
+        UhrDisplay.write(1, (minute & 0x0F));
+        UhrDisplay.setColon(1);
+        UhrDisplay.write(2, (sec >> 4)- 8);
+        UhrDisplay.write(3, (sec & 0x0F));*/
 
-    UhrDisplay.write(0, (minute >> 4)- 8);
-    UhrDisplay.write(1, (minute & 0x0F));
+    UhrDisplay.write(0, (hour >> 4) & 0x03);
+    UhrDisplay.write(1, (hour & 0x0F));
     UhrDisplay.setColon(1);
-    UhrDisplay.write(2, (sec >> 4)- 8);
-    UhrDisplay.write(3, (sec & 0x0F));
-    
-    }
-    
-void changecolor()
+    UhrDisplay.write(2, (minute >> 4)- 8);
+    UhrDisplay.write(3, (minute & 0x0F));
+}
+
+void changecolor(int vergleich, int zahlzurzeit)
 {
-    color = hRGb;
+    if(zahlzurzeit<=vergleich) {
+        color = hRGb;
+
+        if(zahlzurzeit <= 1)
+            color = hRgb;
+    } else
+        color = hrGb;
+
+
 }
 
+
+
 int main()
 {
-
+    UhrTick.attach(UhrOut, 0.1);
+    int vergleich=(zahl*60)*0.2;
 
     while(1) {
+        for( int x = (zahl+1); x > 0; x--) {
+            for (int y=second; y > 0; y--) {
 
 
-       
-        for( int x = (zahl+1); x > 0; x--) {
-           
+                int zahlzurzeit = (y+x*60)-60;
+                changecolor(vergleich,zahlzurzeit);
 
-            for (int y=second; y > 0; y--) {
-                
-                //color = hrGb;
-             
-             //  timer.attach(&changecolor, vergleich*0.2);
-               if((y+x*60)<=vergleich*0.2)
-                color = hRGb;
-                
-                else
-                color = hrGb;
-                
                 TimerDisplay.setColon(colon);
-
                 second--;
                 berechne();
-                ausgabe();
+                ausgabe(zahlzurzeit, vergleich);
                 StripeOut();
-                UhrOut();
-                wait(0.2);
 
+                wait(1);
             }
-
             zahl--;
             second = 60;
-
-           
         }
 
+        SummerOut();
         TimerDisplay.on();
         wait(0.5);
+        SummerOut();
         TimerDisplay.off();
         wait(0.5);
 
+
     }
 }