Jakob, pscht! Das Programm is irgendwas aber es geht haha!

Dependencies:   DigitDisplay mbed Debouncer Led-libary PCF8563

Revision:
1:838565907c81
Parent:
0:925e9ab5be17
--- a/main.cpp	Wed Apr 20 07:20:09 2016 +0000
+++ b/main.cpp	Fri Apr 29 06:32:42 2016 +0000
@@ -1,68 +1,160 @@
 #include "mbed.h"
 #include "DigitDisplay.h"
+#include "WS2812B.h"
+#include "PCF8563.h"
 
-DigitDisplay display(p7, p8);
+#define rGb (0x0f0000)  //Rot
+#define Rgb (0x00ff00)  //Grün
+#define rgB (0x0000ff)  //Blau
+#define RgB (0x00ffff)  //Violet
+#define rGB (0xff00ff)  //Türkis
+#define RGb (0xffff00)  //Rot-Grün
+#define RGB (0xffffff)  //Weiß
+#define rgb (0x000000)  //Aus
+//halbe Helligkeit
+#define hrGb (0x0f0000)  //Rot
+#define hRgb (0x000f00)  //Grün
+#define hrgB (0x00000f)  //Blau
+#define hRgB (0x000f0f)  //Violet
+#define hrGB (0x0f000f)  //Türkis
+#define hRGb (0x0f0f00)  //Rot-Grün
+#define hRGB (0x0f0f0f)  //Weiß
+
+ 
+Timeout timer;
+PCF8563 rtc;
 
-int zahl = 24;  // Schmiedi mach was mit den Tastern, dass man die Zahl einstellen kann
-int sec = 00;
+DigitalOut Led1(LED1);
+DigitalOut Led2(LED2);
+DigitalOut Led3(LED3);
+DigitalOut Led4(LED4);
+ 
+InterruptIn Taster1(p17);
+InterruptIn Taster2(p18);
+InterruptIn Taster3(p19);
+InterruptIn Taster4(p20);
+InterruptIn InternTaster1(P1_16);
+InterruptIn InternTaster2(P0_23);
+InterruptIn InternTaster3(P0_10);
+InterruptIn InternTaster4(P0_15);
+
+PwmOut Summer(p6);
+ 
+LedOut RGBStripe(p25);
+//                       (CLK, I/O)
+DigitDisplay TimerDisplay(p21, p22);
+//                     (CLK, I/O)
+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 second = 00;
 int t;
 int h;
 int z;
 int e;
 bool colon = true;
+int vergleich=(zahl*60);
 
 
+int color;
+
+Serial pc(USBTX, USBRX);
+
 void berechne()
 {
     t= zahl/10;
     h= (zahl-(t*10))/1;
-    z= sec/10;
-    e= (sec-(z*10))/1;
+    z= second/10;
+    e= (second-(z*10))/1;
+}
+
+void ausgabe()
+{
+    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);
+
 }
 
-void ausgabemin()
+
+
+
+
+void StripeOut()
+{
+    __disable_irq();            //Interrupt deaktivieren
+
+    for(int r=0; r<=10; r++)
+        RGBStripe.WriteLed(color);  //Farbe rausschreiben
+
+    __enable_irq();             //Interrupt reaktivieren
+}
+
+void UhrOut()
 {
-        display.write(0, t);
-        display.write(1, h);
-        
+    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));
+    
+    }
+    
+void changecolor()
+{
+    color = hRGb;
 }
 
-void ausgabesec()
+int main()
 {
-        display.write(2, z);
-        display.write(3, e); 
-}
-int main() {
-    
+
+
     while(1) {
-        
-        
-    
-       for( int x = (zahl+1); x > 0; x--)
-       { 
-       for (int y=sec; y > 0; y--)
-       {
+
+
+       
+        for( int x = (zahl+1); x > 0; x--) {
            
-                display.setColon(colon);
-           
-           sec--;
-           berechne();
-           ausgabesec();
-           ausgabemin();
-           wait(1);
+
+            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();
+                StripeOut();
+                UhrOut();
+                wait(0.2);
+
+            }
+
+            zahl--;
+            second = 60;
+
            
         }
-       
-       zahl--;
-       sec = 60;
-        
-            
-        }
-        
-        display.on();
+
+        TimerDisplay.on();
         wait(0.5);
-        display.off();
+        TimerDisplay.off();
         wait(0.5);
-      
+
     }
 }