PWM nebo Pulzně Šířková Modulace je způsob, jakým můžeme ovládat intenzitu svitu LED. Místo toho, abychom LED nechali svítit stále na plný výkon, PWM nám umožňuje rychle zapínat a vypínat LED tak rychle, že to lidské oko nepostřehne. Tímto způsobem můžeme „simulovat“ nižší jas.
Připojení LED k ESP32
Můžeme použít zapojení z prvního příkladu, ale pro úplnost si zapojení LED diody k procesoru popíšeme ještě jednou. Připojíme anodu LED (delší nožička) přes rezistor k jednomu z GPIO pinů na ESP32. V našem případě to bude GPIO 22. Katodu (kratší nožička) připojíme k zemi (GND pinu) na ESP32.
Jak funguje PWM

- Základní myšlenka: PWM řízení pracuje na principu vytváření digitálního signálu, který se rychle přepíná mezi zapnutým (vysokým) a vypnutým (nízkým) stavem.
- Střída (Duty Cycle): Klíčovým pojmem u PWM je střída, což je procentní poměr času, po který je signál ve vysokém stavu (zapnutý), vůči celkovému časovému cyklu signálu. Například střída 50% znamená, že signál je zapnutý polovinu času a vypnutý polovinu času.
- Frekvence PWM: Frekvence PWM signálu určuje, jak rychle se střídají jednotlivé cykly zapnutí a vypnutí. Vyšší frekvence znamená rychlejší přepínání, což může vést k hladší regulaci výkonu.
Příklad kódu pro řízení jasu LED pomocí PWM v jazyce Blockly
Pokud chcete použít digitální výstup v režimu PWM, v sekci Výstupy je na to blok analogový výstup PWM. Parametry bloku jsou Pin : kde zvolíme který pin chceme řídit. Frekvence : udává jak rychle se bude měnit logická úroveň na daném pinu. Hodnota : nám udává kolik energie chceme mít na výstupu. Hodnota je 10ti bitová čili může mít hodnotu 0 – 1023. Blokem analogový výstup PWM nastavíme pin do režimu PWM, dále v kódu můžeme měnit hodnotu na výstupu pomocí bloku analogový výstup ze skupiny bloků Výstupy. Dále v kódu použijeme blok počítat s i od 0 do 1023 po 1. Je to blok, který vykoná kód uvnitř bloku tolikrát kolik si nastavíte průchodů pomocí mezí od a do, při tom se bude měnit proměnná kterou si zvolíte. Jak velký bude přírůstek proměnné si můžete nastavit v posledním parametru po. V našem případě se kód vykoná 1024 krát a při každém průchodu se proměnná i změní o 1.
Příklad kódu pro řízení jasu LED pomocí PWM v jazyce Python
from machine import Pin, PWM
import time
led = PWM(Pin(22)) # pouzijeme GPIO pin 22 pro pripojeni LED
led.freq(5000) # nastavzme frekvenci PWM na 5000 Hz
while True:
for i in range(1024):
led.duty(i) # postupne zvysujeme jas LED
time.sleep(0.001)
for i in range(1023, -1, -1):
led.duty(i) # postupne snizujeme jas LED
time.sleep(0.001)