Wenn es Ihnen Spaß gemacht hat, LEDs auf einem Raspberry Pi zum Blinken zu bringen, warten Sie, bis Sie etwas über die Steuerung der Helligkeit hören! In dieser Anleitung arbeiten wir mit zwei Tasten, um die LED-Helligkeit auf einem Raspberry Pi einzustellen.
Starten Sie Ihr erstes Raspberry Pi-Projekt? So installieren Sie Raspberry Pi OS schnell auf Ihrem Gerät.
Was PWM mit einer LED macht
PWM oder Pulsweitenmodulation ist eine Methode, die den Spannungsausgang der GPIO-Pins (General Purpose Input/Output) des Raspberry Pi künstlich senkt. Es ist künstlich, da Sie die Spannung nicht wirklich reduzieren und sie einfach so schnell ein- und ausschalten, dass die Gesamtspannung niedriger wird als die tatsächliche Spannung, die Sie daran anlegen.
Bei einer LED oder Leuchtdiode lässt eine Erhöhung der Gesamtspannung sie heller leuchten, während eine Verringerung sie dunkler macht. Aber da der Raspberry Pi keinen analogen Ausgang hat, verwenden wir PWM, um die Helligkeit der LED zu steuern.
Was du brauchen wirst
- 2 Druckknöpfe
- 3 Widerstände (250-550 Ω funktionieren. Verwenden Sie einen niedrigeren Wert, wenn die LED zu dunkel ist.)
- 1 LED (beliebige Farbe)
- Brotschneidebrett
- Überbrückungsdrähte
- Raspberry Pi (jedes Modell außer dem Pi Pico)
So verwenden Sie PWM zur Steuerung der LED-Helligkeit auf einem Raspberry Pi
In dieser Anleitung verwenden wir zwei Tasten, um die LED mit PWM heller oder dunkler leuchten zu lassen. Durch Drücken der Taste „heller“ wird die PWM-Ausgabe erhöht, durch Drücken der Taste „dimmer“ wird sie verringert.
Schaltung vorbereiten
- Beginnen wir mit der LED. Platzieren Sie auf dem Steckbrett die LED und schließen Sie einen Widerstand an einer Seite an. Die Seite, auf der der Widerstand platziert wird, spielt keine Rolle.
- Verbinden Sie einen Jumper mit der Kathodenseite. Dieser zeigt auf Pin 11 auf dem Raspberry Pi. Fügen Sie einen weiteren Jumper hinzu, der zur blauen Schiene auf dem Steckbrett führt, und fügen Sie dann einen weiteren Jumper von dieser blauen Schiene zu Pin 9 auf dem Raspberry Pi hinzu, der GND ist.

Notiz: Um die richtige PIN-Nummer auf dem Raspberry Pi zu finden, halten Sie die Platine so, dass die GPIO-Stiftablage rechts sitzt. Der Pin oben links sollte Pin 1 sein, rechts davon sollte Pin 2 sein und unten sollte Pin 3 sein.

- Sie müssen die Drucktasten bauen. Platzieren Sie die Drucktasten auf dem Steckbrett und fügen Sie einen Widerstand zu einem Bein jeder Drucktaste hinzu. Die andere Seite des Widerstands sollte zur blauen Schiene des Steckbretts führen.
Tipp: Möchten Sie mehr über Taster erfahren? Wir haben eine vollständige Anleitung, die Ihnen zeigt, wie Sie Drucktasten mit Raspberry Pi GPIO-Pins verwenden.
- Fügen Sie Überbrückungsdrähte in einer parallelen Verbindung mit dem Widerstand und dem Taster hinzu. Schließen Sie die andere Seite davon an die Pins 13 („Heller“-Taste) und 15 („Dimmer“-Taste) an.

- Verbinden Sie die seitlichen Taster mit einem Überbrückungsdraht mit der roten Schiene des Steckbretts.

- Verbinden Sie die rote Schiene mit einer 3,3-V-Quelle am Raspberry Pi, z. B. Pin 1.
Wenn Python Ihre bevorzugte Programmiersprache ist, erfahren Sie, wie Sie mehrere Python-Versionen unter Linux installieren und verwalten.
Vorbereiten des Codes
Erstellen Sie in Ihrem bevorzugten Codebearbeitungstool eine neue Datei und speichern Sie sie als „rpi-lcdpwm.py“.
- Beginnen Sie mit dem folgenden Code, der Ihnen zwei Möglichkeiten zum Importieren von Modulen in Python bietet: Die erste importiert die
RPi.GPIOModul und lässt Sie es mit just aufrufenGPIOund der zweite importiert nur diesleep()Funktion aus der Gesamtheit dertimeModul.
import RPi.GPIO as GPIO from time import sleep
- Definieren Sie die Pin-Nummern, um das Ändern der Pins zu erleichtern, falls Sie Ihre Meinung später ändern.
ledPin = 11 brightenButton = 13 dimButton = 15
- Optional: Zeile hinzufügen
GPIO.setwarnings(False)damit Sie die GPIO-Warnmeldung vermeiden können, wenn Sie das Skript später starten.
- Legen Sie die Pin-Auswahlmethode fest.
BOARDist eine gute Wahl für Anfänger, da es die Suche nach Pins erleichtert, ohne die Pinbelegung konsultieren zu müssen. Die andere Methode istBCM, was für „Broadcom“ steht. Dabei werden die jedem Pin zugewiesenen Broadcom-Nummern verwendet, die je nach Marke Ihres Raspberry Pi unterschiedlich sein können.
GPIO.setmode(GPIO.BOARD)
- Weisen Sie die GPIO-Pins als Eingang oder Ausgang zu. Wir vergeben
ledPinals Ausgangspin und wird immer seinen Zustand als beginnenLOW. Die nächsten beiden Zeilen werden gesetztbrightenButtonunddimButtonals Eingangspins, die auf Ihre Tastendrücke hören. Diese sollten auch als gesetzt werdenGPIO.PUD_DOWNum sie als Pulldown-Widerstände zu bezeichnen.
GPIO.setup(ledPin, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(brightenButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(dimButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
- Lassen Sie uns die PWM erklären.
pwmLEDPinist eine Variable, die das Tippen erleichtertGPIO.PWM(ledPin, 100)später, und die.start(0)Befehl startet den PWM-Prozess. Wir können jetzt die Ausgabe von ändernledPinmit PWM.
pwmLEDPin = GPIO.PWM(ledPin, 100) pwmLEDPin.start(0)
- Das Tastverhältnis ist der Prozentsatz der Zeit, in der der Pin während einer Pulswelle aktiv ist. Hier stellen wir zuerst den Arbeitszyklus auf 100 % ein. Wir hatten eine ziemlich lange Diskussion zu diesem Thema in unserem Leitfaden zur Verwendung von Servomotoren mit dem Raspberry Pi, falls Sie interessiert sind.
dutyCycle = 100 GPIO.output(ledPin, GPIO.HIGH)
- Für den Looping-Teil setzen wir a
whileSchleife, die praktisch ewig läuft.
while True:
- Zu Beginn dieses Schleifenzyklus aktualisieren wir den Arbeitszyklus.
pwmLEDPin.ChangeDutyCycle(dutyCycle)
- Lassen Sie uns programmieren, was die
brightenButtontut. Wenn die Himbeere Strom erkennt, der durch den Stift fließt, zbrightenButtonwird eine Meldung mit der Aufschrift „brightenButton is HIGH“ angezeigt, die dem aktuellen Wert des Arbeitszyklus 5 hinzufügt, bis er 100 erreicht.
if GPIO.input(brightenButton) == GPIO.HIGH: print("brightenButton is HIGH") if dutyCycle < 100: dutyCycle += 5 sleep(0.25) else: dutyCycle = 100
- Beim Programmieren der
dimButtonFunktion, macht es das Gegenteil, indem es den Wert um 5 verringert, bis er 0 erreicht.
elif GPIO.input(dimButton) == GPIO.HIGH: print("dimButton is HIGH") if dutyCycle > 0: dutyCycle -= 5 sleep(0.25) else: dutyCycle = 0
Endgültiger Code:
import RPi.GPIO as GPIO from time import sleep ledPin = 11 brightenButton = 13 dimButton = 15 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(ledPin, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(brightenButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(dimButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) pwmLEDPin = GPIO.PWM(ledPin, 100) pwmLEDPin.start(0) dutyCycle = 100 GPIO.output(ledPin, GPIO.HIGH) while True: pwmLEDPin.ChangeDutyCycle(dutyCycle) if GPIO.input(brightenButton) == GPIO.HIGH: print("brightenButton is HIGH") if dutyCycle < 100: dutyCycle += 5 sleep(0.25) else: dutyCycle = 100 elif GPIO.input(dimButton) == GPIO.HIGH: print("dimButton is HIGH") if dutyCycle > 0: dutyCycle -= 5 sleep(0.25) else: dutyCycle = 0
Damit es funktioniert
Zunächst benötigen Sie ein Terminal. Sie können das integrierte Terminal des Raspberry Pi verwenden oder den Raspberry Pi über SSH auf einem separaten Computer steuern. Über das Terminal sollten Sie zum Verzeichnis des Python-Skripts gehen und es eingeben python3 rpi-ledpwm.py oder den von Ihnen verwendeten Dateinamen.
Manchmal sieht die LED aus, als würde sie blinken. Die PWM-Frequenz ist wahrscheinlich zu niedrig, wenn das der Fall ist. Sie können die Frequenz erhöhen, indem Sie die Zahl in erhöhen pwmLEDPin = GPIO.PWM(ledPin, 100) bis das Blinken nicht mehr wahrnehmbar ist.
Wenn Sie feststellen, dass die Übergänge körnig sind, verringern Sie die Einschaltzeit sleep(0.25) innerhalb der While-Schleife. Es wird jedoch schneller, wenn Sie es absenken, also senken Sie es nicht zu stark ab.
Tipp: Bevorzugen Sie stattdessen Arduino? Hier ist eine vollständige Anleitung für den Einstieg in Arduino-Projekte.
Häufig gestellte Fragen
Was ist die minimale Frequenz, die ich mit dem Raspberry Pi erzeugen kann?
Die niedrigste Frequenz, die Sie auf einem Raspberry Pi einstellen können, beträgt 10 Hz. Weniger als das kann die Hardware nicht unterstützen.
Was ist die maximale Frequenz, die ich mit dem Raspberry Pi erzeugen kann?
Die höchste Frequenz, die Sie auf einem Raspberry Pi einstellen können, beträgt 8.000 Hz.
Ist es möglich, Pulswellen in Schallwellen umzuwandeln?
Ja. Mit einem piezoelektrischen Element ist es durchaus möglich, Pulswellen in hörbare Schallwellen umzuwandeln. In diesem Fall ändert die Änderung der Frequenz die Tonhöhe, während die Änderung des Arbeitszyklus die Lautstärke anpasst.
Unterstützen Sie unsere Arbeit ❤️
Wenn Ihnen dieser Artikel gefallen hat, können Sie uns mit einem Trinkgeld unterstützen, damit wir weiterhin großartige Inhalte veröffentlichen können.


























