Pulserende led op de Raspberry Pi

FunduinoLaatst bijgewerkt op

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.

Een led met voorschakelweerstand op GPIO 23 van een Raspberry Pi

Dat heb je nodig

Raspberry Pi 4 Model B - 2 GB RAM, 64-bits CPU van 1.5 GHz, WLAN, LAN - Gebruikt Raspberry Pi 4 Model B - 2 GB RAM, 64-bits CPU van 1.5 GHz, WLAN, LAN - Gebruikt 44,90 € *Art.-Nr. F23110180Naar het product — Raspberry Pi 4 Model B - 2 GB RAM, 64-bits CPU van 1.5 GHz, WLAN, LAN - Gebruikt
Breadboard (steekbord) met 830 contacten Breadboard (steekbord) met 830 contacten 2,90 € *Art.-Nr. FUN-1010553Naar het product — Breadboard (steekbord) met 830 contacten
40 stuks breadboardkabel mannelijk/mannelijk (20cm) 40 stuks breadboardkabel mannelijk/mannelijk (20cm) 1,74 € *Art.-Nr. FUN-1010558Naar het product — 40 stuks breadboardkabel mannelijk/mannelijk (20cm)
100 stuks - lichtgevende diodes met een diameter van 5mm (5 kleuren) 100 stuks - lichtgevende diodes met een diameter van 5mm (5 kleuren) 1,97 € *Art.-Nr. F23107316Naar het product — 100 stuks - lichtgevende diodes met een diameter van 5mm (5 kleuren)
100 weerstanden - elk 20x 100 ohm, 200 ohm, 330 ohm, 1K ohm, 10K ohm 100 weerstanden - elk 20x 100 ohm, 200 ohm, 330 ohm, 1K ohm, 10K ohm 1,72 € *Art.-Nr. F23107216Naar het product — 100 weerstanden - elk 20x 100 ohm, 200 ohm, 330 ohm, 1K ohm, 10K ohm

Alle 5 onderdelen samen 53,23 € *

* Alle prijzen incl. wettelijke btw, excl. verzendkosten.

Helderheid via pulsbreedtemodulatie

Een led moet pulserend feller en zwakker worden - in het Engels „faden”.

Om de helderheid te veranderen, zou je eigenlijk de spanning moeten aanpassen. In plaats daarvan gebruik je pulsbreedtemodulatie (PWM): de spanning wordt op millisecondenniveau in- en uitgeschakeld. Bij een hoge PWM-waarde staat het signaal bijna continu aan, bij een lage nauwelijks. Voor het oog lijkt het alsof de led feller of zwakker wordt.

Op de Raspberry Pi kun je software-PWM op alle GPIO-pinnen gebruiken. Daarnaast zijn er speciale pinnen met hardware-PWM.

Het artikel legt PWM uit met 5 V („5 V als de led fel brandt“). De GPIO-pinnen van de Raspberry Pi werken met 3,3 V en zijn niet bestand tegen 5 V.

De led aansluiten

De led wordt via een weerstand van 220 ohm aangesloten op GPIO 23 (pin 16). Het korte pootje loopt via de minrail van het breadboard naar GND (pin 6).

In de onderdelenlijst staat "Raspberry Pi met geschikte USB-kabel", maar de link verwijst naar een gebruikte Raspberry Pi 4. Om de Pi te gebruiken, heb je een voeding met USB-C-stekker nodig, geen gewone USB-kabel. Bovendien noemt de kop in het artikel de Raspberry Pi een microcontroller, terwijl het een singleboardcomputer is.

Een led met voorschakelweerstand op GPIO 23 van een Raspberry Pi

Het programma

Je schrijft de programmacode op de Raspberry Pi in Thonny (menu → Programmeren → Thonny), slaat hem op als pulsierende_led.py en start hem met de groene pijl. De bibliotheek gpiozero is al geïnstalleerd op Raspberry Pi OS.

De variabele Helligkeit loopt van 0 (uit) tot 1 (volledige helderheid). Bij elke iteratie verandert de waarde met Fadeschritte. Zodra de waarde 1 of 0 bereikt, keert het teken van Fadeschritte om - de LED wordt weer donkerder of juist weer helderder. Met een kleinere waarde in sleep() pulseert de LED sneller.

pulserende_led.py
# Bibliothek für 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 über 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 verändert: 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
Handleiding beoordelen

Opmerkingen

Stel een vraag of deel je ervaring

Neem contact met ons op als iets niet werkt. Vermeld daarbij je board en de foutmelding.

We controleren elke reactie voordat deze wordt gepubliceerd. Je e-mailadres blijft bij ons.