Materialien zum Unterricht

Farbenspiele (lang)

An den drei analogen Eingängen 3, 5 und 6 wird jeweils ein Anschluss einer RGB-LED angeschlossen. Die Helligkeiten der drei LED werden kontiniuierlich verändert, so dass alle möglichen Farben entstehen. Für ein schönes Farbspiel hat sich folgende Reihenfolge bewährt:

  1. setup-Teil
    1. Die drei Anschlüsse werden zu Ausgängen.
    2. Alle drei Ausgänge werden so programmiert, dass die LED aus sind. Dazu muss in alle drei Anschlüsse der Wert 255 geschriben werden.
    3. Nacheinander werden alle drei Fraben kontinuierlich eingeschaltet. Danach leuchtet die LED weiß.
  2. loop-Teil
    1. Rot aus
    2. Blau aus
    3. Rot an
    4. Grün aus
    5. Blau an
    6. Grün an

Damit werden kontinuierlich alle Farben gewechselt, ohne dass unschüne Sprünge entstehen oder die LED komplett aus geht.

Variablen

h_rot usw. sind die Helligkeitswerte für die einzelnen Farben. Sie werden mit 255 (aus) festgelegt.

schritt ist die Schrittweite, wie die Farbwerte geändert werden.  

PIN[], rot usw. legt die Nummern der Anschlüsse fest

warten ist die Wartezeit beim Farbwechsel. Wird keine Wartezeit eingeschoben, erfolgt der Farbwechsel so schnell, dass er nicht zu sehen is.

Die Variablendefinition am Anfang kann so aussehen.
int h_rot = 255; 
int h_gruen =255; 
int h_blau = 255;
int schritt = 1;
int PIN[]={3,5,6};
int rot=3;
int gruen=5;
int blau=6;
int warten=20;
        

Das An- und Ausschalten der einzelnen Farben erfolgt mit Funktionen, die außerhalb des loop-Teils programmiert werden.

Im loop-Teil werden die Funktionen nur noch mit ihrem Namen aufgerufen. Im Beispiel sieht man den kompletten loop-Teil und die Funktion, die die rote LED langsam einschaltet. Die Funktion erhält den Namen

rot_an()

Damit wird sie auch aufgerufen.
In der geschweiften Klammer steht der Funktionskörper. Er besteht aus einer while-Schleife, die solange läuft, bis h_rot (Helligkeit rot) größer als 0 ist. Bei jedem Schleifendurchlauf wird

  • der Helligkeitswert um einem Helligkeitsschritt erniedrig
  • dieser Wert an den Ausgang gegeben
  • die vorgegebene Zeit gewartet.

Die Schleife und damit auch die Funktion endet, wenn der Helligkeitswert von rot 0 ist, die rote LED also voll leuchtet.

Aufgabe: Schreibe die weiteren 5 Funktionen, die im loop-Teil noch aufgerufen werden. Wenn alles fertig ist, sollte die LED schön gleichmäßig ihre Farben ändern.

void loop()  { 
  rot_aus();
  blau_aus();
  rot_an();
  gruen_aus();
  blau_an();
  gruen_an();
                
}


void rot_an() {
  while (h_rot>0) {  
      h_rot=h_rot-schritt; 
      analogWrite(rot, h_rot);
      delay(warten);
  }
}

zurück