Man kennt es aus dem Miniaturwunderland.... 

               Tag und Nacht

Das tolle daran: dadurch kommen die tollen Landschaftsgestaltungen bei hellem Licht toll zur Geltung während bei der Dämmerung die Beleuchtungen der Häuschen und Straßenlaternen wirken kann.

 

Was man dazu braucht:

 


     Durch Transistoren (MOSFET) können wir die 12V welche der LED Stripe benötigt mit den 5V des Arduino steuern. Um Farben zu erzeugen arbeiten wir mit PWM (PulsWeitenModulation). Das bedeutet, dass der Ausgang ganz schnell an- und abgeschaltet wird. Das nimmt unser Auge nicht wahr aber die LED wirkt dadurch dunkler.

     Jetzt müssen wir noch etwas die Zusammensetzung des Lichts verstehen. Dazu dient das Bild rechts. Auch wir müssen die drei Grundfarben ROT, GRÜN und BLAU ansteuern. Sind alle gleich stark, ergibt das Weiß.

     Die Helligkeit kann via PWM in 256 Stufen abgerufen werden (0-255).

 

     Jetzt also mal einen Versuchsaufbau:

Die drei Farben werden über die Ausgänge 9, 10 und 11 gesteuert. ACHTUNG nicht jeder Ausgang ist PWM fähig. Der Ausgang wird direkt an der Basis des Transistors angeschlossen. Am Kollektor wird die Lichtleiste angeschlossen. Und zusätzlich ein 10kOhm Widerstand gegen Masse. Der Emittier wird auch auf die Masse gelegt. Wichtig ist, dass beiden Massen zusammengeschlossen werden.

     Fertig ist der Versuchsaufbau.


     Nun zum Sketch:

int blue = 11;                                                       //Der Ausgang für das Blau Signal ist 11

int green = 10;                                                     //Der Ausgang für das Grün Signal ist 10  

int red = 9;                                                           //Der Ausgang für das rot Signal ist 9

int p = 100;                                                          //p benutze ich als kleine Pause zwischen den Änderungen der einzelnen Werten

                                                                            //durch eine Änderung dieses Werts bearbeiten wir die Dauer des Sonnenauf- und Untergang

long P = 480000;                                                 //P benutze ich für die großen Pausen (Tag und Nacht) in Millisekunden (8min)

                                                                            //da der Wert größer als 32.767 ist, muss anstatt "int" "long" verwendet werden

int Hblue = 20;                                                     //Hblue steht für den blauen PWM Wert (0-255)

int Hgreen = 0;                                                     //Hgreen steht für den grünen PWM Wert (0-255)

int Hred = 20;                                                       //Hred steht für den roten PWM Wert (0-255)

 

void setup() {

  pinMode(blue, OUTPUT);                                  //blue (11) ist jetzt ein Ausgang - ob PWM oder digital muss nicht definiert werden

  pinMode(green, OUTPUT);                                //green (10) ist jetzt ein Ausgang

  pinMode(red, OUTPUT);                                    //red (9) ist jetzt ein Ausgang

}

 

void loop() {

  while (Hblue <= 255)                                          //eine "while"-Schleife beginnt -

                                                                             //Solange die Bedingung wahr ist, wird die folgende Geschweifte Klammer wiederholt

  {                                                                          //In dieser Schleife wird von einem Nächtlichen blau/rot ein Sonnenaufgang blau/rot

    analogWrite(blue, Hblue);                                //der Wert von Hblue (aktuell 20) wird als PWM auf den Ausgang 11 geschrieben

    analogWrite(green, Hgreen);                           //der Wert von Hgreen (aktuell 0) wird als PWM auf den Ausgang 10 geschrieben

    analogWrite(red, Hred);                                   //der Wert von Hred (aktuell 20) wird als PWM auf den Ausgang 9 geschrieben

    delay(p);                                                          //eine kleine Pause

    Hblue ++;                                                        //Die Helligkeit von blau wird um 1 gesteigert.

    Hred ++;                                                         //Nicht nur blau muss heller werden, auch rot steig in jeder Runde der Schleife um 1

  }

  Hblue = 255;                                                     //

  Hgreen = 0;                                                      // Zwischenstand der Werte

  Hred = 255;                                                      //

  while (Hgreen <= 255)                                      //in dieser Schleife fahren wir das grün hoch - aus dem Morgenrot wird Tageslicht weiß

  {

    analogWrite(blue, Hblue);

    analogWrite(green, Hgreen);

    analogWrite(red, Hred);

    delay(p);

    Hgreen ++;

  }

  Hblue = 255;                                                      //

  Hgreen = 255;                                                   // Zwischenstand der Werte

  Hred = 255;                                                       //

  delay(P);                                                            //das große P - die Lange Pause

  while (Hgreen >= 0)                                          //in deiser Schleife nehmen wir den grün Anteil heraus - Abendrot

  {

    analogWrite(blue, Hblue);

    analogWrite(green, Hgreen);

    analogWrite(red, Hred);

    delay(p);

    Hgreen --;                                                       //sowie ++ den Wert immer um 1 anhebt, senkt -- den Wert immer um 1

  }

  Hblue = 255;                                                      //

  Hgreen = 0;                                                       // Zwischenstand der Werte

  Hred = 255;                                                       //

  while (Hblue >= 20)                                           //in dieser Schleife senken wir die Helligkeit des rot/blau Gemisches 

  {

    analogWrite(blue, Hblue);

    analogWrite(green, Hgreen);

    analogWrite(red, Hred);

    delay(p);

    Hblue --;

    Hred --;

  }

  Hblue = 20;                                                       //

  Hgreen = 0;                                                      // Zwischenstand der Werte

  Hred = 20;                                                        //

  delay(P);

}                                                                          // und nun beginnt alles wieder von vorn.


Ab ins MoBa Zimmer...


Jetzt wird's ernst...

Ich habe beim zusammenlöten festgestellt, das die Ausgänge 10 und 11 zu nah zusammen sind um die Basis der Transistoren direkt anzulöten. Daher nehme ich die Ausgänge 6, 9 und 10. Als Spannungsversorgung habe ich ein 12V Netzteil genommen mit 6A. Da dieser auch den Arduino mit versorgen soll, habe ich ein Step Down Spannungswandler eingebaut. Außerdem habe ich festgestellt, dass die LED RGB Leiste nicht genug Helligkeit für "Tageslicht" erzeugt. Daher habe ich zusätzlich am Transistor der für die Farbe grün zuständig ist, eine 12V LED Birne mit einer Leuchtkraft von 540Lumen angeschlossen. 

Die LED Leisten verschwinden in passenden Aluminium Profilen. Die Spannungen werden über passende Kabel direkt zwischen den Transistoren und den LED Leisten hergestellt.

 

Mit diesem Ergebnis bin ich eigentlich ganz zufrieden. 

Teilt mir doch im Gästebuch eure Erfahrungen mit.


Download
Arduino Sketch
RGB_Stripe.ino
Text Dokument 1.1 KB