I denne tutorial vil vi vise dig hvordan til at generere PWM-signaler med ESP32 ved hjælp af Arduino IDE. Som et eksempel bygger vi et simpelt kredsløb, der dæmper en LED ved hjælp af LED p .m-controlleren på ESP32. Vi viser dig også, hvordan du kan få det samme P .m-signal på forskellige GPIOs på samme tid.
Før du fortsætter med denne tutorial, du skal have ESP32 add-on installeret i din Arduino IDE., Følg en af følgende tutorials for at installere ESP32 på Arduino IDE, hvis du ikke allerede har gjort det.
- Installation af ESP32 Bestyrelsen i Arduino IDE (Windows instruktioner)
- Installation af ESP32 Bestyrelsen i Arduino IDE (Mac-og Linux-vejledning)
Vi også anbefale at tage et kig på følgende ressourcer:
- Kom godt i Gang med ESP32 Dev Modul
- ESP32 Benet Reference: Som GPIO pins skal du bruge?
se Videovejledningen
denne vejledning er tilgængelig i videoformat (se nedenfor) og i skriftligt format (fortsæt med at læse).,
Dele, der Kræves
for At følge denne tutorial, du har brug for disse dele:
- ESP32 DOIT DEVKIT V1 Bord – læser bedste ESP32 udvikling bestyrelser
- 3x 5mm LED
- 3x 330 Ohm modstand
- Breadboard
- Jumper ledninger
Du kan bruge den foregående links eller gå direkte til MakerAdvisor.com/tools for at finde alle delene til din projekter, til den bedste pris!,
ESP32 LED PWM-Controller
ESP32 har en LED PWM-controller med 16 uafhængige kanaler, der kan konfigureres til at generere PWM-signaler med forskellige egenskaber.
Her er de trin, du skal følge for at dæmpe en LED med P .m ved hjælp af Arduino IDE:
1. Først skal du vælge en p .m-kanal. Der er 16 kanaler fra 0 til 15.
2. Derefter skal du indstille p .m-signalfrekvensen. For en LED er en frekvens på 5000 h.fin at bruge.
3., Du skal også indstille signalets driftscyklusopløsning: du har opløsninger fra 1 til 16 bit. Vi bruger 8-bit opløsning, hvilket betyder, at du kan styre LED-lysstyrken ved hjælp af en værdi fra 0 til 255.
4. Dernæst skal du angive, hvilke GPIO eller GPIOs signalet vises på. Til det bruger du følgende funktion:
ledcAttachPin(GPIO, channel)
denne funktion accepterer to argumenter. Den første er GPIO, der vil udsende signalet, og den anden er den kanal, der vil generere signalet.
5., Endelig bruger du følgende funktion til at kontrollere LED-lysstyrken ved hjælp af P .m:
ledcWrite(channel, dutycycle)
denne funktion accepterer som argumenter den kanal, der genererer P .m-signalet, og driftscyklussen.
dæmpning af en LED
lad os se et simpelt eksempel for at se, hvordan du bruger ESP32 LED p .m-controlleren ved hjælp af Arduino IDE.
skematisk
LED en LED til din ESP32 som i det følgende skematiske diagram. LED ‘ en skal tilsluttes GPIO 16.,
(Dette skematisk bruger ESP32 DEVKIT V1 modul version med 30 GPIOs – hvis du bruger en anden model, skal du kontrollere benet for bestyrelsen, du bruger.Bemærk: Du kan bruge den ønskede pin-kode, så længe den kan fungere som et output. Alle stifter, der kan fungere som udgange, kan bruges som p .m-stifter. For mere information om ESP32 GPIOs, læs: ESP32 Benet Reference: Som GPIO pins skal du bruge?
kode
åbn din Arduino IDE og kopier følgende kode.,
Vis ra. – kode
du starter med at definere den pin-kode, som LED ‘ en er knyttet til. I dette tilfælde er LED ‘ en fastgjort til GPIO 16.
const int ledPin = 16; // 16 corresponds to GPIO16
derefter indstiller du p .m-signalegenskaberne. Du definerer en frekvens på 5000 h., vælger kanal 0 for at generere signalet og indstiller en opløsning på 8 bit. Du kan vælge andre egenskaber, anderledes end disse, for at generere forskellige p .m-signaler.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
setup(), skal du konfigurere LED PWM med de egenskaber, du har defineret tidligere ved hjælp ledcSetup () – funktion, der accepterer som argumenter, ledChannel, frekvensen, og den resolution, som følger:
ledcSetup(ledChannel, freq, resolution);
Næste, du nødt til at vælge den GPIO du får signal fra. For at bruge den ledcAttachPin () funktion, der accepterer som argumenter GPIO hvor du ønsker at få signalet, og den kanal, der genererer signalet. I dette eksempel får vi signalet i ledPin GPIO, der svarer til GPIO 16., Kanalen, der genererer signalet, er led ‘ enkanal, der svarer til kanal 0.
ledcAttachPin(ledPin, ledChannel);
i sløjfen varierer driftscyklussen mellem 0 og 255 for at øge LED-lysstyrken.
og derefter mellem 255 og 0 for at reducere lysstyrken.
for at indstille lysstyrken på LED ‘ en skal du bare bruge ledc functionrite () – funktionen, der accepterer som argumenter den kanal, der genererer signalet, og driftscyklussen.
ledcWrite(ledChannel, dutyCycle);
da vi bruger 8-bit opløsning, styres driftscyklussen ved hjælp af en værdi fra 0 til 255., Bemærk, at i ledc .rite() funktion bruger vi den kanal, der genererer signalet, og ikke GPIO.
test af eksemplet
Upload koden til din ESP32. Sørg for, at du har valgt den rigtige tavle og COM-port. Se på dit kredsløb. Du skal have en lysdæmper LED, der øger og mindsker lysstyrken.
Få Samme Signal på Forskellige GPIOs
Du kan få det samme signal fra den samme kanal i en anden GPIOs., For at opnå det skal du bare vedhæfte disse GPIOs til den samme kanal på opsætningen().
lad os ændre det forrige eksempel til dim 3 led ‘ er ved hjælp af det samme p .m-signal fra den samme kanal.
Skematisk
Add to Lysdioder til dit kredsløb ved at følge de næste diagram:
(Dette skematisk bruger ESP32 DEVKIT V1 modul version med 30 GPIOs – hvis du bruger en anden model, husk at tjekke benet for bestyrelsen, du bruger.,)
kode
Kopier følgende kode til din Arduino IDE.
Vis ra. – kode
Dette er den samme kode som den foregående, men med nogle ændringer. Vi har defineret yderligere to variabler for to nye lysdioder, der henviser til GPIO 17 og GPIO 5.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
derefter har vi i opsætningen () tilføjet følgende linjer for at tildele begge GPIOs til kanal 0. Det betyder, at vi får det samme signal, der genereres på kanal 0, på begge GPIOs.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
test af projektet
Upload den nye skitse til din ESP32., Sørg for, at du har valgt den rigtige tavle og COM-port. Nu, tage et kig på dit kredsløb:
Alle GPIOs er udlæser den samme PWM-signal. Så alle tre lysdioder øger og mindsker lysstyrken samtidigt, hvilket resulterer i en synkroniseret effekt.
Indpakning Op
I resumé i dette indlæg, du har lært at bruge LED PWM-controller i det ESP32 med Arduino IDE til at dæmpe en LED., De lærte koncepter kan bruges til at kontrollere andre udgange med p .m ved at indstille de rigtige egenskaber til signalet.
Vi har andre tutorials i forbindelse med ESP32, at du kan også lide:
- ESP32 Web Server – Arduino IDE
- ESP32 Data Logning af Temperatur til MicroSD-Kort
- ESP32 Web-Server med BME280 – Mini vejrstation
- ESP32 vs ESP8266 – Fordele og Ulemper
Dette er et uddrag fra vores kursus: Lære ESP32 med Arduino IDE. Hvis du kan lide ESP32 og du vil lære mere, anbefaler vi at tilmelde dig Lær ESP32 med Arduino IDE kursus.