N° 04 – LED clignotante

FunduinoDernière mise à jour le

Eine LED per PWM heller und dunkler werden lassen – mit Python und gpiozero

Eine LED, die langsam heller und wieder dunkler wird, zeigt das Prinzip der Pulsweitenmodulation besonders anschaulich.

Du lernst, wie PWM funktioniert, schließt die LED an einen GPIO-Pin an und steuerst ihre Helligkeit mit einem kurzen Python-Programm.

Eine LED mit Vorwiderstand an GPIO 23 eines Raspberry Pi

Helligkeit per Pulsweitenmodulation

Eine LED soll pulsierend heller und dunkler werden – englisch „faden“.

Um die Helligkeit zu ändern, müsste man eigentlich die Spannung verändern. Stattdessen nutzt man die Pulsweitenmodulation (PWM): Die Spannung wird im Millisekundenbereich ein- und ausgeschaltet. Bei einem hohen PWM-Wert liegt das Signal fast durchgehend an, bei einem niedrigen kaum noch. Für das Auge wirkt das, als würde die LED heller oder dunkler.

Am Raspberry Pi kannst du Software-PWM auf allen GPIO-Pins nutzen. Zusätzlich gibt es spezielle Pins mit Hardware-PWM.

Der Artikel erklärt PWM mit 5 V („5V, wenn die LED hell leuchtet“). Die GPIO-Pins des Raspberry Pi arbeiten mit 3,3 V und vertragen keine 5 V.

Die LED anschließen

Die LED kommt über einen 220-Ohm-Widerstand an GPIO 23 (Pin 16). Das kurze Bein führt über die Minus-Leiste des Steckbretts zu GND (Pin 6).

In der Bauteilliste steht „Raspberry Pi mit passendem USB-Kabel“, verlinkt ist ein gebrauchter Raspberry Pi 4. Zum Betrieb braucht der Pi ein Netzteil mit USB-C-Stecker, kein einfaches USB-Kabel. Außerdem nennt die Überschrift im Artikel den Raspberry Pi einen Mikrocontroller – er ist ein Einplatinencomputer.

Eine LED mit Vorwiderstand an GPIO 23 eines Raspberry Pi

Das Programm

Den Programmcode schreibst du auf dem Raspberry Pi in Thonny (Menü → Programmieren → Thonny), speicherst ihn als pulsierende_led.py und startest ihn mit dem grünen Pfeil. Die Bibliothek gpiozero ist auf Raspberry Pi OS bereits installiert.

Die Variable Helligkeit läuft zwischen 0 (aus) und 1 (volle Helligkeit). In jedem Durchlauf wird sie um den Wert von Fadeschritte verändert. Erreicht sie 1 oder 0, wechselt Fadeschritte das Vorzeichen – die LED wird wieder dunkler beziehungsweise wieder heller. Mit einem kleineren Wert in sleep() pulsiert sie schneller.

pulsierende_led.py
# Bibliothek fuer die LED mit PWM einbinden
from gpiozero import PWMLED
from time import sleep

LED = PWMLED(23)      # die LED ist an GPIO 23 (Pin 16) angeschlossen

# Fadeschritte: bestimmt die Geschwindigkeit des "Fadens".
Fadeschritte = 0.02
# Helligkeit: der Wert, der ueber die PWM ausgegeben wird.
# 0 bedeutet aus, 1 bedeutet volle Helligkeit. 0 ist nur ein beliebiger Startwert.
Helligkeit = 0

while True:
    # Hier wird die LED mit der aktuellen Helligkeit angesteuert.
    LED.value = Helligkeit
    # Nun wird der Wert veraendert: zur bisherigen Helligkeit
    # werden die Fadeschritte addiert.
    Helligkeit = Helligkeit + Fadeschritte
    # Die LED soll die Helligkeit nur ganz kurz beibehalten.
    # Verringert man diesen Wert, wird das Pulsieren schneller.
    sleep(0.025)
    # Sobald die Helligkeit 1 oder 0 erreicht hat, wechselt das Vorzeichen
    # der Fadeschritte. Die LED wird dann wieder dunkler bzw. wieder heller.
    if Helligkeit >= 1:
        Helligkeit = 1
        Fadeschritte = -Fadeschritte
    if Helligkeit <= 0:
        Helligkeit = 0
        Fadeschritte = -Fadeschritte
Évaluer le guide

Commentaires

Poser une question ou partager une expérience

Écris-nous si quelque chose ne fonctionne pas. Indique-nous ton modèle de carte et le message d’erreur.

Nous vérifions chaque commentaire avant sa publication. Ton adresse e-mail reste chez nous.