BULME-TIMER_V2 funktionsdüchtig.

Dependencies:   DigitDisplay PCF8563 Led-libary dPrell mbed

Files at this revision

API Documentation at this revision

Comitter:
04M04
Date:
Thu Jun 23 19:15:16 2016 +0000
Commit message:
BULME-TIMER_V2

Changed in this revision

DigitDisplay.lib Show annotated file Show diff for this revision Revisions of this file
PCF8563.lib Show annotated file Show diff for this revision Revisions of this file
WS2812.lib Show annotated file Show diff for this revision Revisions of this file
dPrell.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DigitDisplay.lib	Thu Jun 23 19:15:16 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/seeed/code/DigitDisplay/#d3173c8bfd48
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PCF8563.lib	Thu Jun 23 19:15:16 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/Ladner-Schmied/code/PCF8563/#1246b8a8f15f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WS2812.lib	Thu Jun 23 19:15:16 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/Ladner-Schmied/code/Led-libary/#a2549b9f2785
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dPrell.lib	Thu Jun 23 19:15:16 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/Ladner-Schmied/code/dPrell/#33f7ace525c1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jun 23 19:15:16 2016 +0000
@@ -0,0 +1,285 @@
+//______________________________________________________Bibliotheken
+#include "mbed.h"
+#include "WS2812B.h"
+#include "PCF8563.h"
+#include "DigitDisplay.h"
+#include "dPrell.h"
+//______________________________________________________Farbdefinitionen
+//             G R B
+//             | | |
+#define rGb (0xff0000)  //Grün
+#define Rgb (0x00ff00)  //Rot
+#define rgB (0x0000ff)  //Blau
+#define RgB (0x00ffff)  //Violet
+#define rGB (0xff00ff)  //Türkis
+#define RGb (0xffff00)  //Gelb
+#define RGB (0xffffff)  //Weiß
+#define rgb (0x000000)  //Aus
+//halbe Helligkeit
+#define hrGb (0x0f0000)  //Grün
+#define hRgb (0x000f00)  //Rot
+#define hrgB (0x00000f)  //Blau
+#define hRgB (0x000f0f)  //Violet
+#define hrGB (0x0f000f)  //Türkis
+#define hRGb (0x0f0f00)  //Gelb
+#define hRGB (0x0f0f0f)  //Weiß
+//______________________________________________________Schnittstellen
+Ticker TickerOutput;
+
+PCF8563 rtc;
+
+DigitalOut Led1(LED1);
+DigitalOut Led2(LED2);
+DigitalOut Led3(LED3);
+DigitalOut Led4(LED4);
+
+dPrell Taster1(p17);
+dPrell Taster2(p18);
+dPrell Taster3(p19);
+dPrell Taster4(p20);
+dPrell InternTaster1(P1_16);
+dPrell InternTaster2(P0_23);
+dPrell InternTaster3(P0_10);
+dPrell InternTaster4(P0_15);
+
+PwmOut Summer(p6);
+
+LedOut RGBStripe(p25);
+//                       (CLK, I/O)
+DigitDisplay TimerDisplay(p21, p22);
+//                     (CLK, I/O)
+DigitDisplay UhrDisplay(p23, p24);
+
+Serial pc(USBTX, USBRX);
+//______________________________________________________Variablen
+
+uint8_t hour, minute, sec;
+
+int color = rgb;
+int ColorTime = 0;
+int Prozent = 10;
+int TimerZeit = 0;
+int TimerMinuten = 0;
+int TimerSekunden = 0;
+int UhrZeit = 0;
+int VergleichsZeitEins = 0;
+int VergleichsZeitZwei = 0;
+
+bool SetMenu = 0;
+bool StartStop = 0;
+bool Berechnung = 0;
+bool End = 0;
+//______________________________________________________Funktionen
+
+void Set();
+void Plus();
+void Minus();
+void TimerStartStop();
+void TasterTrig();
+
+void TimerIn();
+void TimerPlay();
+void TimerOut();
+void VergleichsZeit();
+void ColorChangeTime();
+void ColorProzentTime();
+void StripeOut();
+void UhrOut();
+void SummerOut();
+void Output();
+void EndSignal();
+//______________________________________________________Main
+int main()
+{
+    TickerOutput.attach(&Output, 0.2);
+
+    Taster1.rise(&Set);
+    Taster2.rise(&Plus);
+    Taster3.rise(&Minus);
+    Taster4.rise(&TimerStartStop);
+    InternTaster1.rise(&Set);
+    InternTaster2.rise(&Plus);
+    InternTaster3.rise(&Minus);
+    InternTaster4.rise(&TimerStartStop);
+    while(1) {
+        if(SetMenu == 0 && (TimerMinuten > 0 || TimerSekunden > 0) && StartStop == 1) {
+            VergleichsZeit();
+            TimerPlay();
+        } else if(SetMenu == 0 && StartStop == 1) {
+            StartStop = 0;
+        }
+        if(End == 1) {
+            EndSignal();
+        }
+    }
+}
+//______________________________________________________Interrupts
+
+void Set()
+{
+    Led1 = !Led1;
+    if (SetMenu == 0 && StartStop == 0) {
+        SetMenu = 1;
+    } else if (SetMenu == 1 && StartStop == 0) {
+        SetMenu = 0;
+    }
+    End = 0;
+    Summer.pulsewidth(0);
+    Berechnung = 0;
+    TasterTrig();
+}
+void Plus()
+{
+    Led2 = !Led2;
+    if(SetMenu == 1) {
+        TimerMinuten++;
+        TimerSekunden = 0;
+    }
+    TasterTrig();
+
+}
+void Minus()
+{
+    Led3 = !Led3;
+    if(SetMenu == 1 && minute>0) {
+        TimerMinuten--;
+        TimerSekunden = 0;
+    }
+    TasterTrig();
+
+}
+void TimerStartStop()
+{
+    Led4 = !Led4;
+    if(SetMenu == 0 && (TimerMinuten > 0 || TimerSekunden > 0) && StartStop == 0) {
+        StartStop = 1;
+    } else if(SetMenu == 0 && StartStop ==1) {
+        StartStop = 0;
+    }
+    Berechnung = 1;
+    TasterTrig();
+}
+//______________________________________________________Funktionen
+
+void TasterTrig()
+{
+    Taster1.trig();
+    Taster2.trig();
+    Taster3.trig();
+    Taster4.trig();
+    InternTaster1.trig();
+    InternTaster2.trig();
+    InternTaster3.trig();
+    InternTaster4.trig();
+}
+//______________________________________________________Timer-Bereich
+
+void TimerPlay()
+{
+    while(TimerMinuten > 0) {
+        if(TimerSekunden == 0) {
+            TimerMinuten--;
+            TimerSekunden = 60;
+        }
+        while(TimerSekunden >0) {
+            TimerSekunden--;
+            wait(1);
+            if(StartStop == 0) {
+                return;
+            }
+        }
+    }
+    if(TimerMinuten < 1 && TimerSekunden < 1) {
+        End = 1;
+        StartStop = 0;
+    }
+    return;
+}
+
+void TimerOut()
+{
+    TimerZeit = (TimerMinuten * 100) + TimerSekunden;
+    TimerDisplay.write(TimerZeit);
+    TimerDisplay.setColon(1);
+}
+//______________________________________________________RGB-,Uhr-,Summer-Bereich
+void VergleichsZeit()
+{
+    if (Berechnung == 1) {
+        VergleichsZeitEins = TimerMinuten * 60;
+        Berechnung = 0;
+    }
+}
+
+void ColorChangeTime()
+{
+    VergleichsZeitZwei = (TimerMinuten * 60) + TimerSekunden;
+
+    if (SetMenu == 0 && VergleichsZeitZwei <= VergleichsZeitEins * 0.2 && VergleichsZeitZwei > 0) {
+        color = RGb;
+    } else if (SetMenu == 0 && VergleichsZeitZwei == 0) {
+        color = Rgb;
+    } else if (SetMenu == 0 && VergleichsZeitZwei > VergleichsZeitEins * 0.2){
+        color = rGb;
+    } else if (SetMenu == 1){
+        color = rgB;
+    } else {
+        color = rgb;
+    }
+}
+
+void ColorProzentTime()
+{
+
+}
+
+void StripeOut()
+{
+    __disable_irq();            //Interrupt deaktivieren
+
+    for(int r=1; r<=Prozent; r++)
+        RGBStripe.WriteLed(color);  //Farbe rausschreiben
+
+    __enable_irq();             //Interrupt reaktivieren
+}
+
+void UhrOut()
+{
+    hour = rtc.read(HOURS);
+    minute = rtc.read(MINUTES);
+    sec = rtc.read(SECONDS);
+
+    UhrDisplay.write(0, (hour >> 4) & 0x03); //Stunden  -0x03
+    UhrDisplay.write(1, (hour & 0x0F));
+    UhrDisplay.setColon(1);
+    UhrDisplay.write(2, (minute >> 4)- 8);  //Minuten und Sekunden -8
+    UhrDisplay.write(3, (minute & 0x0F));
+}
+
+void SummerOut()
+{
+    // specify period first, then everything else
+    Summer.period(0.001f);  // 0.001 second period
+    Summer.pulsewidth(0.0004); // 0.0004 second pulse (on)
+    // led flashing
+    wait(4);
+    Summer.pulsewidth(0);
+}
+
+void Output()
+{
+    ColorChangeTime();
+    TimerOut();
+    UhrOut();
+    StripeOut();
+}
+
+void EndSignal()
+{
+    __disable_irq();
+    Prozent = 10;
+    SummerOut();
+    Berechnung = 0;
+    End = 0;
+    __enable_irq();
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Jun 23 19:15:16 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/082adc85693f
\ No newline at end of file