LED-Helligkeit mit PWM steuern

Im Prinzip kennt ein GPIO nur zwei Zustände: „High“ und „Low“. Also „An“ und „Aus“ oder „1“ und „0“. Es handelt sich dabei um die binäre Logik. Werte dazwischen gibt es nicht. Demnach kann man eine LED an einem GPIO-Ausgang auch nur ein- und ausschalten. Die Helligkeit wird mit dem Vorwiderstand festgelegt.

Trotzdem gibt es einen Trick mit dem Du die Helligkeit einer LED doch steuern kannst. Und zwar macht man es sich zu nutze, dass das Leuchten einer LED eine gewisse Trägheit aufweist und für das menschliche Auge deshalb mit zeitlicher Verzögerung erfolgt. Wenn die LED sehr schnell ein- und ausgeschaltet wird, können wir den Schaltvorgang nicht direkt wahrnehmen. Desweiteren weist eine LED auch eine gewisse Trägheit auf, weshalb sie nicht schnell genug vom leuchtenden in den nichtleuchtenden Zustand kommt. Sie glimmt praktisch etwas nach. Statt eine schnellen Blinken sehen wir die durchschnittliche Leuchtdauer im Verhältnis zur Dauer des ausgeschalteten Zustands in Form einer unterschiedlichen Helligkeit.

Die Frage ist, wie realisiert man die Software-Steuerung? Das ist vergleichsweise einfach. Ein GPIO kann nicht einfach nur „High“ und „Low“, sondern zwischen diesen Zuständen hin- und herwechseln. Also ein Taktsignal ausgeben. Dieses Taktsignal wird als PWM-Signal realisiert, bei dem die Breite des Pulses über die Zeit eingestellt werden kann. Das heißt, es wird die Dauer des Leuchtens der LED eingestellt und somit die Helligkeit der Leuchtdiode gesteuert.

Aufbau und Bauteile

Raspberry Pi Pico: Externe LED einschalten und ausschalten
  • LED1: Leuchtdiode, rot, gelb oder grün
  • R1: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
  1. Verbinde die Anode (langer Anschluss) der Leuchtdiode mit dem GPIO-Pin.
  2. Verbinde die Kathode (kurzer Anschluss) der Leuchtdiode mit dem Widerstand.
  3. Verbinde die andere Seite des Widerstands mit dem GND-Pin.

Programmcode

Im Programmcode wird der GPIO für die Leuchtdiode als PWM-Ausgang initialisiert und eine Frequenz von 1.000 Hertz (Hz) eingestellt. Anschließend wird innerhalb der Schleife das Duty-Cycle, das Verhältnis zwischen Impuls und Pause des Signals erhöht. Die Leuchtdiode leuchtet also immer heller, geht aus und wird wieder heller.

# Bibliotheken laden
from machine import Pin, PWM
from utime import sleep

# Initialisierung von GPIO13 als PWM-Ausgang
led = PWM(Pin(13))

# PWM-Einstellung: Frequenz in Hertz (Hz)
led.freq(1000)

i = 0

# Wiederholung einleiten (Schleife)
while True:
    led.duty_u16(i)
    sleep(0.1)
    i = i + 3000
    if i > 65535:
        i = 0

Verschiedene Parameter im Programm sorgen dafür, das die LED pulsiert. Allerdings nicht besonders schön. Es sieht sehr nach gewollt, aber nicht gekonnt aus. Der Programmcode lädt zum Experimentieren ein.

  1. Die Zeile „sleep(0.1)“ gibt an wie lange in Sekunden zwischen den Veränderungsschritte gewartet werden soll. Vergrößere und verkleinere den Wert von „0.1“. Zum Beispiel auf „0.5“ oder „0.05“.
  2. Softwareseitig kann das PWM-Signal einen Wert zwischen 0 und 65.535 annehmen. Bei 0 ist die LED aus. Bei 65.535 leuchtet die LED am hellsten. Allerdings leuchtet die LED schon wesentlich vor 65.535 sehr hell. Verkleinere den Wert von „65535“ so weit, wie es wirklich nötig ist.
  3. Von 0 (LED aus) nach 65.535 (LED leuchtet voll) wird in 3000er Schritten die Helligkeit gesteigert. Vergrößere den Wert von „3000“ und verkleinere ihn, um den Effekt auf die Helligkeitsänderung herauszufinden.

Darf es etwas mehr sein?

Nur eine LED steuern ist doch langweilig. Machen wir es anspruchsvoller. Wie wäre es mit einer Ampelsteuerung oder ein Lauflicht?

Highlights: Elektronik mit dem Raspberry Pi Pico

Elektronik mit dem Raspberry Pi

Die Stärken des Raspberry Pi liegen klar in der Computer-Architektur mit typischen Computer-Schnittstellen und Möglichkeit zum Ausführen von Open-Source-Software für Linux.

Weitere verwandte Themen:

Teilen:

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!