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:
Damit werden kontinuierlich alle Farben gewechselt, ohne dass unschüne Sprünge entstehen oder die LED komplett aus geht. |
![]() |
Variablenh_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.
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); } } |