Bisher konnten die LEDs nur Ein- und Ausgeschaltet werden. Da jede LED nur zwei Zustände kennt (An, Aus), spricht man von einem digitalen Verhalten.
Wir Menschen sind analoge Typen, neben zwei Extremwerten gibt es noch jede Menge Zwischenwerte. Deshalb ist es angenehmer, die LED nicht nur einfach An- und Ausgehen zu sehen, sondern eine allmähliches, langsames Aufleuchten und Ausgehen zu beobachten. Die LED soll analog gesteuert werden.
Dazu hat das Board sechs Ausgänge, die durch dieses Zeichen ~ (Tilde) gekennzeichnet sind: 3, 5, 6, 9, 10 und 11.
Aufgabe: Es soll die erste LED allmählich aufleuchten und wieder ausgehen. Dazu wird die LED am Anschluss 3 angeschlossen. Außer dem Anschluss zu +5V sollten alle anderen Verbindungen entfernt werden. |
![]() |
Es werden drei Variablen festgelegt: helligkeit enthält immer den aktuellen Wert der Helligkeit, der zum Ausgang geschrieben wird. Da die LED am Anfang aus ist, enthält die Variable den Wert 255. hell_stufe ist der Wert, um den die Helligkeit in jedem Schleifendurchlauf geändert wird. Wie bekannt, wird der Anschluss 3 auf Ausgang geschaltet. Das eigentliche Programm wird durch zwei while-Schleifen realisiert: die erste wird durchlaufen, wenn die LED heller wird und die zweite macht sie wieder dunkler. 1. while-Schleife
Die Schleife wird so oft durchlaufen, bis der Helligkeitswert 0 ist. Dann leuchtet die LED ganz hell. Die nächste Schleife funktioniert genau so, nur dass jetzt der Wert wieder bis 255 hochgezählt wird.
|
int helligkeit = 255; int hell_stufe = 1; int warten=5; void setup() { pinMode(3,OUTPUT); } void loop() { while (helligkeit>0) { helligkeit = helligkeit - hell_stufe; analogWrite(3, helligkeit); delay(warten); } while (helligkeit<255) { helligkeit = helligkeit + hell_stufe; analogWrite(3, helligkeit); delay(warten); } } |
Aufgabe: Es sollen sechs LED nacheinander gleichmäßig an- und ausgehen. Dazu werden die LED mit den analogen Ausgängen verbunden. Zum Ansprechen der einzelnen Anschlüsse werden die Anschlussnummern in einem Array abgelegt. int PIN[ ]={3,5,6,9,10,11}; Damit kann in einer Schleife auf die sechs Anschlüsse zugegriffen werden. Im setup-Teil werden zuerst alle Anschlüsse als Ausgang definiert. Im loop-Teil kann nun ebenfalls über eine for-Schleife nacheinander auf die Anschlüsse zugegriffen werden: void loop() { for (int i=0; i<=5;i++) { */ hier stehen die while-Schleifen für eine LED, jetzt aber abgepasst auf die Ansteuerung der Anschlüsse über das Array } } Sind die while-Schleifen entsprechend der Ansteuerung der Anschlüsse über das Array verändert, sollten alle sechs LED nacheinander an- und ausgehen.
|
![]() int warten=5; int PIN[]={3,5,6,9,10,11}; void setup() { for (int i=0; i<=5;i++) { pinMode(PIN[i], OUTPUT); } } |
Aufgabe: Beim Einschalten leuchten alle LED auf und gehen erst nach dem ersten Ansprechen durch die Schleife aus. Ändere das Programm so, dass nach dem Einschalten alle LED sofort ausgeschaltet werden. |