Beispiel RGB LED Strip 12 Volt Variante mit einer Leitung pro Farbe

Dependencies:   mbed

Fork of RGBLEDStrip by smd.iotkit1.ch

https://developer.mbed.org/media/cache/components/components/img_0482.jpg.200x200_q85.jpg

LED Strips (RGB LED Streifen) eröffnen neue Möglichkeiten für die Dekorative Beleuchtungen von Gegenständen und Räumen.

LED Strips werden in Laufmetern mit einer definierten Anzahl von RGB LED's pro Meter verkauft.

Es gibt unterschiedliche Arten der Ansteuerung, alle LED einer Farbe, jedes RGB LED einzeln.

Im aktuellen Beispiel verwenden wird ein 12V LED Strip mit einem Anschluss pro Farbe. Diese brauchen einen Verstärker, z.B. MOSFET.

Die LED Strip wird an den FET D5-D7) Header (+ ist oben) angeschlossen und benötigen für jede Farbe ein DigitalOut (An/Aus) oder PwmOut (Dimming).

Anwendungen

  • Raumbeleuchtung
  • Dekorative Ausleuchtung von Gegenständen
Revision:
1:df3810debdde
Parent:
0:0579a7c0500f
--- a/main.cpp	Mon Mar 23 17:34:24 2015 +0000
+++ b/main.cpp	Wed Apr 29 13:21:41 2015 +0000
@@ -1,83 +1,59 @@
-/** RGB LED Strip (SPI)
+/** Beispiel RGB LED Strip 12 Volt Variante mit einer Leitung pro Farbe
 */
 #include "mbed.h"
 
-SPI spi(D11, NC, D13); // mosi, miso, sclk
-
-/** 3 x 3 Werte */
-unsigned int strip[9];
+PwmOut green( D5 );
+PwmOut red( D6 );
+PwmOut blue( D7 );
 
-void writeLED()
+void off()
 {
-    for ( int p = 0; p < 9; p++ )
-        spi.write( strip[p] );
+    printf( "off \n" );
+    red = 0;
+    green = 0;
+    blue = 0;
+    wait( 1.0 );
 }
 
-void clearLED()
+void dim( PwmOut& pin )
 {
-    for ( int p = 0; p < 9; p++ ) 
+    printf( "dim\n" );
+    for ( float i = 0.0f; i < 1.0f; i += .01f )
     {
-        strip[p] = 0;
-        spi.write( strip[p] );
+        pin = i;
+        wait( 0.02 );
     }
+    wait( 1.0 );
+    
 }
 
-int main()
+int main() 
 {
-    printf( "LED Strip Test \n" );
-     
-    spi.format( 8,0 );
-    spi.frequency( 800000 );
-    
-    while (true) 
+    while   ( true )
     {
-        // Gruen, Rot, Blau - von Dunkel bis Hell
-        for ( int i = 0; i < 128; i+=32 )
-        {
-                // LED 1
-                strip[0] = i;
-                strip[1] = 0;
-                strip[2] = 0;
-                // LED 2
-                strip[3] = 0;
-                strip[4] = i;
-                strip[5] = 0;
-                // LED 3
-                strip[6] = 0;
-                strip[7] = 0;
-                strip[8] = i;
-                writeLED();
-                wait( 0.1 );
-        }
+        dim( red );
+        off();
+        dim( green );
+        off();
+        dim( blue );
+        off();
+        
+        red = 1;
         wait( 1.0 );
-        clearLED();
-
-        // Lauflicht (5 x 4 Zustaende)
-        int p = 0;
-        for ( int i = 0; i < 20; i++ )
-        {
-            p++;
-            switch  ( p )
-            {
-                case 1:
-                    strip[0] = strip[1] = strip[2] = 32;
-                    break;
-                case 2:
-                    strip[0] = strip[1] = strip[2] = 0;
-                    strip[3] = strip[4] = strip[5] = 32;
-                    break;
-                case 3:
-                    strip[3] = strip[4] = strip[5] = 0;
-                    strip[6] = strip[7] = strip[8] = 32;
-                    break;
-                default:
-                    clearLED();
-                    p = 0;
-                    break;
-            }
-            writeLED();
-            wait( 0.2 );                    
-        }
+        off();
+        
+        green = 1;
+        wait( 1.0 );
+        off();
+        
+        blue = 1;
+        wait( 1.0 );
+        off();
+        
+        red = 1;
+        blue = 1;
+        green = 1;
+        wait( 1.0 );
+        off();
     }
 }
-      
\ No newline at end of file