
Ein analoges Signal kann von 0% bis 100% reguliert werden. Digitale Signale kennen aber nur zwei Zustände: an (HIGH) oder aus (LOW).
Bei der Pulsweitenmodulation (PWM) wird eine Rechteckwelle erzeugt, das digitale Signal wird in bestimmten Abständen immer wieder ein- und ausgeschaltet. Wiederholt man diesen Zyklus der Ein- und Auszustände schnell genug hintereinander, entsteht der Eindruck einer sich kontinuierlich veränderten Spannung zwischen 0 und 5V. Damit kann die Leuchtstärke einer LED scheinbar stufenlos manipuliert werden.
Nur die digitalen Pins, die mit einem ~ gekennzeichnet sind, können mit der PWM angesprochen werden.

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
int LED = 6; void setup() { // bei analogWrite ist kein setup notwendig } void loop() { // heller for (int i = 0; i < 250; i += 10) { analogWrite(LED, i); delay(200); } // dunkler for (int i = 250; i > 0; i -= 10) { analogWrite(LED, i); delay(200); } } |
Alternative:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
int LED = 6; int Schritte = 5; int Helligkeit = 0; void setup() { // bei analogWrite ist kein setup notwendig Serial.begin(9600); } void loop() { analogWrite(LED, Helligkeit); Helligkeit = Helligkeit + Schritte; delay(50); /* Wenn die Helligkeit den Wert 0 oder (||) 255 erreicht hat, verändert sich der Wert für Schritte: aus 5 wird -5, wenn Schritte den Wert 255 erreicht hat -> rückwärts zählen Wird beim Rückwärtszählen der Wert 0 erreicht, wird aus -5 +5 -> vorwärts zählen */ if (Helligkeit == 0 || Helligkeit == 255) { Schritte = -Schritte; } } |
Quelle
Letzte Aktualisierung: