RGB LED Strip (SPI)

Dependencies:   mbed

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 den unterschiedlichsten Formen angeboten.

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

Im aktuellen Beispiel verwenden wird ein LED Strip mit einen IC pro RGB LED, d.h. jedes RGB LED kann einzeln via SPI Bus angesprochen werden.

Die LED Strip wird an GND, 5V (!) und an die Datenpins CI - D13 (SLK), DI - D11 (MOSI) angeschlossen.

Auf dem Strip kommen WS2801 IC's zum Einsatz. Das Gegenstück zum WS2801 ist der WS2811 IC welcher aber nur mit ein paar mbed Boards funktioniert.

Anwendungen

  • Raumbeleuchtung
  • Dekorative Ausleuchtung von Gegenständen
Committer:
marcel1691
Date:
Mon Mar 23 17:34:24 2015 +0000
Revision:
0:0579a7c0500f
RGB LED Strip (SPI)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcel1691 0:0579a7c0500f 1 /** RGB LED Strip (SPI)
marcel1691 0:0579a7c0500f 2 */
marcel1691 0:0579a7c0500f 3 #include "mbed.h"
marcel1691 0:0579a7c0500f 4
marcel1691 0:0579a7c0500f 5 SPI spi(D11, NC, D13); // mosi, miso, sclk
marcel1691 0:0579a7c0500f 6
marcel1691 0:0579a7c0500f 7 /** 3 x 3 Werte */
marcel1691 0:0579a7c0500f 8 unsigned int strip[9];
marcel1691 0:0579a7c0500f 9
marcel1691 0:0579a7c0500f 10 void writeLED()
marcel1691 0:0579a7c0500f 11 {
marcel1691 0:0579a7c0500f 12 for ( int p = 0; p < 9; p++ )
marcel1691 0:0579a7c0500f 13 spi.write( strip[p] );
marcel1691 0:0579a7c0500f 14 }
marcel1691 0:0579a7c0500f 15
marcel1691 0:0579a7c0500f 16 void clearLED()
marcel1691 0:0579a7c0500f 17 {
marcel1691 0:0579a7c0500f 18 for ( int p = 0; p < 9; p++ )
marcel1691 0:0579a7c0500f 19 {
marcel1691 0:0579a7c0500f 20 strip[p] = 0;
marcel1691 0:0579a7c0500f 21 spi.write( strip[p] );
marcel1691 0:0579a7c0500f 22 }
marcel1691 0:0579a7c0500f 23 }
marcel1691 0:0579a7c0500f 24
marcel1691 0:0579a7c0500f 25 int main()
marcel1691 0:0579a7c0500f 26 {
marcel1691 0:0579a7c0500f 27 printf( "LED Strip Test \n" );
marcel1691 0:0579a7c0500f 28
marcel1691 0:0579a7c0500f 29 spi.format( 8,0 );
marcel1691 0:0579a7c0500f 30 spi.frequency( 800000 );
marcel1691 0:0579a7c0500f 31
marcel1691 0:0579a7c0500f 32 while (true)
marcel1691 0:0579a7c0500f 33 {
marcel1691 0:0579a7c0500f 34 // Gruen, Rot, Blau - von Dunkel bis Hell
marcel1691 0:0579a7c0500f 35 for ( int i = 0; i < 128; i+=32 )
marcel1691 0:0579a7c0500f 36 {
marcel1691 0:0579a7c0500f 37 // LED 1
marcel1691 0:0579a7c0500f 38 strip[0] = i;
marcel1691 0:0579a7c0500f 39 strip[1] = 0;
marcel1691 0:0579a7c0500f 40 strip[2] = 0;
marcel1691 0:0579a7c0500f 41 // LED 2
marcel1691 0:0579a7c0500f 42 strip[3] = 0;
marcel1691 0:0579a7c0500f 43 strip[4] = i;
marcel1691 0:0579a7c0500f 44 strip[5] = 0;
marcel1691 0:0579a7c0500f 45 // LED 3
marcel1691 0:0579a7c0500f 46 strip[6] = 0;
marcel1691 0:0579a7c0500f 47 strip[7] = 0;
marcel1691 0:0579a7c0500f 48 strip[8] = i;
marcel1691 0:0579a7c0500f 49 writeLED();
marcel1691 0:0579a7c0500f 50 wait( 0.1 );
marcel1691 0:0579a7c0500f 51 }
marcel1691 0:0579a7c0500f 52 wait( 1.0 );
marcel1691 0:0579a7c0500f 53 clearLED();
marcel1691 0:0579a7c0500f 54
marcel1691 0:0579a7c0500f 55 // Lauflicht (5 x 4 Zustaende)
marcel1691 0:0579a7c0500f 56 int p = 0;
marcel1691 0:0579a7c0500f 57 for ( int i = 0; i < 20; i++ )
marcel1691 0:0579a7c0500f 58 {
marcel1691 0:0579a7c0500f 59 p++;
marcel1691 0:0579a7c0500f 60 switch ( p )
marcel1691 0:0579a7c0500f 61 {
marcel1691 0:0579a7c0500f 62 case 1:
marcel1691 0:0579a7c0500f 63 strip[0] = strip[1] = strip[2] = 32;
marcel1691 0:0579a7c0500f 64 break;
marcel1691 0:0579a7c0500f 65 case 2:
marcel1691 0:0579a7c0500f 66 strip[0] = strip[1] = strip[2] = 0;
marcel1691 0:0579a7c0500f 67 strip[3] = strip[4] = strip[5] = 32;
marcel1691 0:0579a7c0500f 68 break;
marcel1691 0:0579a7c0500f 69 case 3:
marcel1691 0:0579a7c0500f 70 strip[3] = strip[4] = strip[5] = 0;
marcel1691 0:0579a7c0500f 71 strip[6] = strip[7] = strip[8] = 32;
marcel1691 0:0579a7c0500f 72 break;
marcel1691 0:0579a7c0500f 73 default:
marcel1691 0:0579a7c0500f 74 clearLED();
marcel1691 0:0579a7c0500f 75 p = 0;
marcel1691 0:0579a7c0500f 76 break;
marcel1691 0:0579a7c0500f 77 }
marcel1691 0:0579a7c0500f 78 writeLED();
marcel1691 0:0579a7c0500f 79 wait( 0.2 );
marcel1691 0:0579a7c0500f 80 }
marcel1691 0:0579a7c0500f 81 }
marcel1691 0:0579a7c0500f 82 }
marcel1691 0:0579a7c0500f 83