
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 das digitale Signal in bestimmten Abständen immer wieder ein- und ausgeschaltet, um ähnliche Ergebnisse wie die eines normalen analogen Signals zu erhalten. Der Ein-Aus-Wechsel simuliert die Spannung zwischen 0 und 5 Volt. Der Dauer des Ein-Zustandes ist die Pulsweite.
Nur die digitalen Pins, die mit einem ~ gekennzeichnet sind, können mit der PWM angesprochen werden.
Quelle: 🔗https://www.arduino.cc/en/Tutorial/Foundations/PWM (eigene Bearbeitung, abgerufen am 05.12.24)


Beispiel:
Die LED an Pin 7 wird in 10er-Schritten langsam heller und anschließend in 10-Schritten wieder dunkel.
So sieht es aus:
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; } } |