v tomto tutoriálu vám ukážeme, jak generovat PWM signály s ESP32 pomocí Arduino IDE. Jako příklad postavíme jednoduchý obvod, který ztlumí LED pomocí LED PWM regulátoru ESP32. Ukážeme vám také, jak můžete získat stejný signál PWM na různých GPIOs současně.

Než budete pokračovat v tomto tutoriálu byste měli mít ESP32 add-on nainstalován v Arduino IDE., Postupujte podle jednoho z následujících tutoriálů a nainstalujte ESP32 na Arduino IDE, pokud jste tak již neučinili.
- Instalace ESP32 Rady v Arduino IDE (Windows podle pokynů)
- Instalace ESP32 Rady v Arduino IDE (Mac a Linux podle pokynů)
doporučujeme také podívat se na následující zdroje:
- začínáme s ESP32 Dev Module
- ESP32 Pinout Odkaz: GPIO piny, Které byste měli použít?
podívejte se na video tutoriál
tento tutoriál je k dispozici ve formátu videa (Sledujte níže) a v písemném formátu (pokračujte ve čtení).,
Díly Potřebné
postupujte podle tohoto návodu budete potřebovat tyto díly:
- ESP32 DOIT DEVKIT V1 Rada – přečtěte si nejlepší ESP32 vývojové desky
- 3x 5 mm LED
- 3x 330 Ohm odpor
- Prkénko
- Propojovací kabely
můžete použít předchozí odkazy, nebo jít přímo do MakerAdvisor.com/tools najít všechny díly pro vaše projekty za nejlepší cenu!,
ESP32 LED PWM Controller
ESP32 má led PWM regulátor s 16 nezávislými kanály, které lze nakonfigurovat tak, aby generovaly PWM signály s různými vlastnostmi.
zde jsou kroky, které budete muset následovat, abyste ztlumili LED s PWM pomocí Arduino IDE:
1. Nejprve musíte zvolit kanál PWM. K dispozici je 16 kanálů od 0 do 15.
2. Poté musíte nastavit frekvenci signálu PWM. U LED je frekvence 5000 Hz v pořádku.
3., Musíte také nastavit rozlišení pracovního cyklu signálu: máte rozlišení od 1 do 16 bitů. Použijeme 8bitové rozlišení, což znamená, že můžete ovládat jas LED pomocí hodnoty od 0 do 255.
4. Dále musíte určit, na které GPIO nebo GPIOs se signál objeví. K tomu budete používat následující funkci:
ledcAttachPin(GPIO, channel)
tato funkce přijímá dva argumenty. První je GPIO, které vysílá signál, a druhý je kanál, který generuje signál.
5., Nakonec pro ovládání jasu LED pomocí PWM použijte následující funkci:
ledcWrite(channel, dutycycle)
tato funkce přijímá jako argumenty kanál, který generuje signál PWM, a pracovní cyklus.
stmívání LED
podívejme se na jednoduchý příklad, jak používat PWM řadič ESP32 LED pomocí Arduino IDE.
schéma
připojte LED k vašemu ESP32 jako v následujícím schématu. LED dioda by měla být připojena k GPIO 16.,

(Toto schéma používá ESP32 DEVKIT V1 modul verze s 30 Gpio – pokud používáte jiný model, prosím, zkontrolujte, zda kolíky na palubě, který používáte.)
Poznámka: můžete použít libovolný pin, který chcete, pokud může fungovat jako výstup. Všechny piny, které mohou působit jako výstupy, mohou být použity jako PWM piny. Pro více informací o ESP32 GPIOs si přečtěte: ESP32 pinout Reference: které piny GPIO byste měli používat?
kód
otevřete Arduino IDE a zkopírujte následující kód.,
Zobrazit raw Kód
začnete definováním pin, ke kterému je LED připojena. V tomto případě je LED připojena k GPIO 16.
const int ledPin = 16; // 16 corresponds to GPIO16
poté nastavíte vlastnosti signálu PWM. Definujete frekvenci 5000 Hz, zvolíte kanál 0 pro generování signálu a nastavíte rozlišení 8 bitů. Můžete si vybrat jiné vlastnosti, jiné než tyto, generovat různé PWM signály.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
V setup(), musíte nakonfigurovat LED PWM s vlastnostmi, které jste definovali dříve pomocí ledcSetup() funkce, která přijímá jako argumenty, ledChannel, frekvence, a usnesení, a to následovně:
ledcSetup(ledChannel, freq, resolution);
Next, musíte zvolit GPIO dostanete signál od. K tomu použijte funkci ledcAttachPin (), která přijímá jako argumenty GPIO, kde chcete získat signál, a kanál, který generuje signál. V tomto příkladu dostaneme signál v LEDPIN GPIO, který odpovídá GPIO 16., Kanál, který generuje signál, je ledkanál, který odpovídá kanálu 0.
ledcAttachPin(ledPin, ledChannel);
Ve smyčce, budete měnit střídu v rozmezí 0 a 255 pro zvýšení jasu LED.
a poté mezi 255 a 0 pro snížení jasu.
Pro nastavení jasu LED, stačí použít ledcWrite() funkce, která přijímá jako argumenty kanál, který generuje signál, a duty cyklu.
ledcWrite(ledChannel, dutyCycle);
protože používáme 8bitové rozlišení, bude pracovní cyklus řízen pomocí hodnoty od 0 do 255., Všimněte si, že ve funkci ledcWrite() používáme kanál, který generuje signál, a nikoli GPIO.
testování příkladu
Nahrajte kód do ESP32. Ujistěte se, že máte vybranou správnou desku a port COM. Podívej se na svůj okruh. Měli byste mít stmívací LED, která zvyšuje a snižuje jas.

získání stejného signálu na různých GPIOs
můžete získat stejný signál ze stejného kanálu v různých GPIOs., Chcete-li toho dosáhnout, stačí připojit tyto GPIOs ke stejnému kanálu v nastavení().
upravíme předchozí příklad na dim 3 LED diody pomocí stejného signálu PWM ze stejného kanálu.
Schéma
Přidat další dvě Led diody do obvodu tím, že následuje další schéma:

(Toto schéma používá ESP32 DEVKIT V1 modul verze s 30 Gpio – pokud používáte jiný model, prosím, zkontrolujte, zda kolíky na palubě, který používáte.,)
kód
zkopírujte následující kód do Arduino IDE.
Zobrazit raw Kód
jedná se o stejný kód jako předchozí, ale s některými úpravami. Definovali jsme další dvě proměnné pro dvě nové LED diody, které se týkají GPIO 17 a GPIO 5.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
pak jsme v nastavení () přidali následující řádky pro přiřazení obou GPIOs kanálu 0. To znamená, že dostaneme stejný signál, který je generován na kanálu 0, na obou Gpio.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
testování projektu
nahrajte nový náčrt do svého ESP32., Ujistěte se, že máte vybranou správnou desku a port COM. Nyní se podívejte na svůj obvod:

všechny GPIOs vysílají stejný signál PWM. Takže všechny tři LED diody zvyšují a snižují jas současně, což vede k synchronizovanému efektu.

zabalení
v souhrnu jste se v tomto příspěvku naučili, jak používat LED PWM řadič ESP32 s Arduino IDE k dim LED., Získané pojmy lze použít k ovládání dalších výstupů pomocí PWM nastavením správných vlastností signálu.
máme další návody související s ESP32, které se vám mohou také líbit:
- webový Server ESP32 – Arduino IDE
- teplota protokolování dat ESP32 na MicroSD kartu
- webový Server ESP32 s BME280 – Mini meteorologická stanice
- ESP32 vs ESP8266 – klady a zápory
Toto je výňatek z našeho kurzu: Naučte se ESP32 s Arduino IDE. Pokud se vám líbí ESP32 a chcete se dozvědět více, doporučujeme se přihlásit do Learn ESP32 s kurzem Arduino IDE.