Pulsating LED - Fading with PWM

FunduinoLast updated on

Eine LED mit Pulsweitenmodulation heller und dunkler werden lassen

Eine LED soll nicht einfach an- und ausgehen, sondern pulsierend heller und dunkler werden. Im Englischen heißt dieser Effekt „fading“.

Dabei lernst du die Pulsweitenmodulation kennen – den Trick, mit dem ein Mikrocontroller trotz seiner rein digitalen Ausgänge Zwischenstufen erzeugt.

Steckbrett mit LED und Vorwiderstand am Arduino UNO
Schaltplan für den Arduino UNO

Choose a microcontroller

Pins, schematic, and sketch in the steps change with your selection. It remains saved.

Warum es PWM braucht

Ein digitaler Ausgang am Mikrocontroller kennt nur zwei Zustände: 5 Volt an oder 5 Volt aus. Um eine LED dunkler leuchten zu lassen, müsstest du die Spannung dazwischen einstellen können – etwa 5 Volt für hell, 4 Volt für etwas dunkler und so weiter. Genau das können digitale Pins aber nicht.

Es gibt aber einen Umweg: die Pulsweitenmodulation, kurz PWM. Dabei wird die Spannung im Millisekundentakt ein- und ausgeschaltet. Bei einer hohen PWM liegen die 5 Volt fast durchgehend am Pin an, bei einer niedrigen nur noch ganz kurz. Für das Auge sieht das genauso aus, als würde die Spannung tatsächlich schwanken – die LED wirkt heller oder dunkler.

Das ist eine sehr knappe Zusammenfassung. Wenn du tiefer einsteigen willst, findest du im Netz ausführliche Erklärungen zur Pulsweitenmodulation.

Verkabeln und programmieren

Pin assignment Arduino UNO

LED 1Pin 5
LED 2Pin 7
Logikspannung5 V

Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.

Nicht jeder digitale Pin des UNO kann PWM. Geeignet sind die Pins, die auf dem Board mit einer Tilde (~) gekennzeichnet sind: 3, 5, 6, 9, 10 und 11. Im Sketch hängt die LED an Pin 6.

Wenn du den Arduino UNO zum ersten Mal benutzt: Hardware und Software einrichten.

Steckbrett mit LED und Vorwiderstand am Arduino UNO
Schaltplan für den Arduino UNO
Pinübersicht des Arduino UNO mit hervorgehobenen PWM-Pins
Die PWM-Pins des UNO sind mit einer Tilde gekennzeichnet
1 / 2
Sketch für den Arduino UNO
int LED = 6;  // Das Wort "LED" steht jetzt für den Pin 6

// Fadeschritte bestimmt die Geschwindigkeit des Fadens.
int Fadeschritte = 5;

// "Helligkeit" steht für den Wert, der bei der PWM ausgegeben wird.
// Die 0 ist dabei nur ein beliebiger Startwert.
int Helligkeit = 0;

void setup()
{
  // Für analogWrite ist kein Setup notwendig.
}

void loop()
{
  /*
    analogWrite aktiviert an der LED die PWM-Funktion. Ausgegeben wird der Wert,
    der unter dem Namen "Helligkeit" gespeichert ist - beim ersten Durchlauf also 0.
  */
  analogWrite(LED, Helligkeit);

  /*
    Nun wird der Wert für die Ausgabe verändert: Zur bisherigen Helligkeit kommen
    die Fadeschritte dazu, beim ersten Mal also 0 + 5 = 5. Der loop-Teil wiederholt
    sich, danach beträgt die Helligkeit 10, dann 15 und so weiter.
  */
  Helligkeit = Helligkeit + Fadeschritte;

  // Die LED behält die Helligkeit 25 Millisekunden lang, also nur ganz kurz.
  // Ein kleinerer Wert lässt die LED schneller pulsieren.
  delay(25);

  /*
    Hat die Helligkeit den Wert 0 oder (||) 255 erreicht, wechselt das Vorzeichen
    der Fadeschritte. Die LED wird also zuerst bei jedem Durchlauf ein bisschen
    heller, bis der Höchstwert 255 erreicht ist. Danach zählt der Sketch in
    Fünferschritten rückwärts, bis die Helligkeit wieder bei 0 ist - und von vorn.
  */
  if (Helligkeit == 0 || Helligkeit == 255)
  {
    Fadeschritte = -Fadeschritte;
  }
}

Download: sketch-fuer-den-arduino-uno.ino

Board in the Arduino IDEArduino Uno

Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.

Rate the instructions

Comments

Ask a question or share an experience

Contact us if something doesn’t work. Please include your board and the error message.

We review every comment before publication. Your email address remains with us.