
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:
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:
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;
}
}

