erweitert um RGB LED

Files at this revision

API Documentation at this revision

Comitter:
corsa1600
Date:
Tue Apr 02 18:07:35 2019 +0000
Parent:
0:f0345f20337e
Commit message:
LED_Blink

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Apr 02 17:24:04 2019 +0000
+++ b/main.cpp	Tue Apr 02 18:07:35 2019 +0000
@@ -8,12 +8,14 @@
 DigitalOut green(p24);
 DigitalOut blue(p25);
  
-class StopLight {
+class StopLight 
+{
 private:
+    Timer t1;   //mein Timer
     EventQueue _queue;
     int _pending;
  
-    enum state { RED, GREEN, YELLOW };
+    enum state { RED, GREEN, YELLOW,GREENBLINK };
  
     // The _step function is a traditional FSM which enqueues transitions onto the event queue
     void _step(state transition) {
@@ -25,7 +27,12 @@
  
             case GREEN:
                 set_green();
-                _pending = _queue.call_in(1000, this, &StopLight::_step, YELLOW);
+                _pending = _queue.call_in(1000, this, &StopLight::_step, GREENBLINK);
+                break;
+                
+            case GREENBLINK:
+                set_greenBlink();
+                _pending = _queue.call_in(3000, this, &StopLight::_step, YELLOW);
                 break;
  
             case YELLOW:
@@ -34,18 +41,56 @@
                 break;
         }
     }
-    void set_red(){
+    
+void set_red()
+    {
         red = 0; green = 1; blue = 1;
     }
-    void set_green(){
+void set_green()
+    {
         red = 1; green = 0; blue = 1;
+         
     }
-    void set_yellow() {
+void set_greenBlink()
+    {
+        t1.start();    // ich starte meinen Timer
+        //red = 1; green = 1; blue = 1;
+        if(t1.read_ms()>200)    // erst wenn 10Hz
+    {
+        
+        if(green=1)
+        {
+            red = 1; green = 1; blue = 1;
+            }
+        else
+        {
+            red = 1; green = 0; blue = 1;
+            }
+            t1.reset();     // ich resete meinen Timer
+    }
+        
+        if ( green=0)
+        green=1;
+        else
+        green=0;
+    }
+void set_yellow() 
+    {
         red = 0; green = 0; blue = 1;
+       
+       /* 
+        wait_ms(150);
+        red = 1; green = 1; blue = 1;
+        wait_ms(150);
+        red = 0; green = 0; blue = 1;
+        wait_ms(150);
+        red = 1; green = 1; blue = 1;
+        */
     }
 public:
     // The fire function can immediately change states in the FSM
-    void fire() {
+    void fire() 
+    {
         _queue.cancel(_pending);
         _queue.call(this, &StopLight::_step, GREEN);
         _queue.dispatch();
@@ -54,7 +99,8 @@
  
 StopLight sl;
  
-int main (void) {
+int main (void) 
+{
     sl.fire();
     wait(osWaitForever);
 }
\ No newline at end of file