Bonus: LED über Potentiometer steuern
Hier finden Sie noch ein Beispiel, wie Sie die Helligkeit der LED über ein Potentiometer steuern können. Dies kombiniert die Nutzung von PWM mit der Messung eines analogen Signals.
Start Lab in Wokwi
Um die Helligkeit von LEDs oder die Geschwindigkeit von Motoren stufenlos anzupassen, kann eine Pulsweitenmodulation (PWM) verwendet werden. Mit dieser Methode lässt sich ein digitales Signal so erzeugen, dass es wie ein analoges wirkt. Dies geschieht durch ein schnelles Umschalten des Ausgangsports zwischen den Zuständen LOW und HIGH. Dabei sind die Frequenz des Umschaltvorgangs und das Tastverhältnis (Duty Cycle) wichtige Faktoren.

Um PWM Signale mit Micropython zu nutzen müssen wir die Klasse Pin und PWM importieren.
from machine import Pin, PWMAls erstes legen wir ein Pin Objekt (led_pin) an und erzeugen anschließend ein Objekt der Klasse PWM.
Der Konstruktor erwartet mindestens ein Argument vom Typ Pin, z.B. unser led_pin.
PWM kann an allen ausgangsfähigen Pins aktiviert werden.
from machine import Pin, PWMled_pin = Pin(25)pwm = PWM(led_pin)Um die Frequenz und das Tastverhältnis festzulegen gibt es die zwei Methoden freq(x) und duty(x)
Im Beispiel wird eine Frequenz von 5000 Herz eingestellt, was für das Dimmen einer LED ausreichend ist.
Am ESP32 kann die Frequenz von 1Hz bis 40MHz eingestellt werden, aber wenn die Frequenz steigt, sinkt die Auflösung des Tastverhältnisses.
from machine import Pin, PWMled_pin = Pin(25)pwm = PWM(led_pin)
pwm.freq(5000)pwm.duty(512)Die PWM hat eine Auflösung von 10 Bit. Damit sind
Der Wert 512 entspricht also einer Impulsdauer von 50%, also LED auf halbe Helligkeit.
Wir wollen nun unsere LED langsam ein und wieder ausschalten.
from machine import Pin, PWMfrom time import sleep_ms
led_pin = Pin(27, Pin.OUT)pwm = PWM(led_pin, freq=5000)
TIME_DELAY = 5while True: for duty_cycle in range(0,1024): pwm.duty(duty_cycle) sleep_ms(TIME_DELAY)Unser Program nutzt eine for Schleife um den Dutycyle von 0% auf 100% zu erhöhen.
Damit dies nicht zu schnell geschieht und wir den Prozess gut erkennen können fügen wir ein kurzes Delay in jedem Schleifendurchlauf ein.
Probieren Sie gerne andere Zeitwerte aus und sehen Sie die Veränderung.
Bonus: LED über Potentiometer steuern
Hier finden Sie noch ein Beispiel, wie Sie die Helligkeit der LED über ein Potentiometer steuern können. Dies kombiniert die Nutzung von PWM mit der Messung eines analogen Signals.
Start Lab in Wokwi
Sie haben ein PWM Signal mit einer Auflösung von 10 Bit.
duty für ein Tastverhältnis von 30 % annehmen?20 ms?pwm.duty(213)?machine.PWM