I denne opplæringen vil vi vise deg hvordan å generere PWM-signaler med ESP32 ved hjelp av Arduino IDE. Som et eksempel vil vi bygge en enkel krets som demper en LED med LED-PWM-kontrolleren i ESP32. Vi vil også vise deg hvordan du kan få det samme PWM-signal på ulike GPIOs på samme tid.
Før du fortsetter med denne opplæringen du skal ha ESP32 tillegget installert i din Arduino IDE., Gjør ett av følgende veiledninger for å installere ESP32 på Arduino IDE, hvis du ikke allerede har gjort det.
- Installere ESP32 Styret i Arduino IDE (Windows instruksjoner)
- Installere ESP32 Styret i Arduino IDE (Mac og Linux instruksjoner)
Vi også anbefale å ta en titt på følgende ressurser:
- Komme i Gang med ESP32 Dev-Modulen
- ESP32 Pinout Referanse: Som GPIO pinnene bør du bruke?
Se Video Tutorial
Denne tutorial er tilgjengelig i video-format (se nedenfor) og i skriftlig format (fortsett å lese).,
Deler som er Nødvendige
for Å følge denne opplæringen du trenger disse delene:
- ESP32 DOIT DEVKIT V1 Styret – les beste ESP32 utvikling styrene
- 3x 5 mm LED
- 3x 330 Ohm motstand
- Koblingsbrett
- Jumper kabler
Du kan bruke det foregående ledd eller gå direkte til MakerAdvisor.com/tools for å finne alle deler til alle dine prosjekter til beste pris!,
ESP32 LED-PWM-Kontrolleren
ESP32 har en LED-PWM-kontrolleren med 16 uavhengige kanaler som kan være konfigurert til å generere PWM-signaler med ulike egenskaper.
Her er fremgangsmåten du må følge for å dimme LED med PWM ved hjelp av Arduino IDE:
1. Først, må du velge en PWM-kanal. Det er 16 tv fra 0 til 15.
2. Deretter må du angi PWM-signal frekvens. For en LYSDIODE, en frekvens på 5000 Hz er fine å bruke.
3., Du må også angi signal ‘ s duty cycle oppløsning: du har vedtak fra 1 til 16 bit. Vi vil bruke 8-bits oppløsning, noe som betyr at du kan styre LED lysstyrke ved hjelp av en verdi fra 0 til 255.
4. Neste, må du angi hvilken GPIO eller GPIOs signalet skal vises på. For at du skal bruke følgende funksjon:
ledcAttachPin(GPIO, channel)
Denne funksjonen aksepterer to argumenter. Den første er GPIO som vil sende ut signalet, og den andre er den kanalen som vil generere signal.
5., Til slutt, til å styre LED-lysstyrke bruk av PWM, kan du bruke følgende funksjon:
ledcWrite(channel, dutycycle)
Denne funksjonen aksepterer som argumenter for den kanalen som er å generere PWM-signal, og driftssyklus.
Dimming LED
La oss se på et enkelt eksempel for å se hvordan du bruker ESP32 LED-PWM-kontrolleren ved hjelp av Arduino IDE.
Skjematisk
Wire et FØRTE til din ESP32 som i følgende skjematiske diagrammet. LED bør være koblet til GPIO 16.,
(Dette skjema bruker ESP32 DEVKIT V1-modul versjon med 30 GPIOs – hvis du bruker en annen modell, vennligst sjekk den pinout for styret du bruker.)
Merk: du kan bruke en pin-kode som du vil, så lenge det kan fungere som en utgang. Alle pinner som kan fungere som utgangene kan brukes som PWM-pins. For mer informasjon om ESP32 GPIOs, les: ESP32 Pinout Referanse: Som GPIO pinnene bør du bruke?
– Koden
Åpne din Arduino IDE og kopier koden nedenfor.,
Vise raw-kode
Du starter med å definere pin-LED-en er koblet til. I dette tilfellet LED er knyttet til GPIO 16.
const int ledPin = 16; // 16 corresponds to GPIO16
Deretter setter du PWM-signal egenskaper. Du angi en frekvens på 5000 Hz, velge kanal 0 for å generere signal, og angi en oppløsning på 8 biter. Du kan velge andre egenskaper, annet enn disse, generere ulike PWM-signaler.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
I setup(), må du konfigurere LED PWM med de egenskapene du har definert tidligere ved hjelp av den ledcSetup () – funksjonen, som tar som argumenter, ledChannel, frekvens, og oppløsning, slik:
ledcSetup(ledChannel, freq, resolution);
Neste, du må velge GPIO du får signal fra. For at bruk ledcAttachPin () – funksjonen, som tar som argumenter GPIO hvor du ønsker å få signal, og kanalen som genererer signaler. I dette eksemplet vil vi få signalet i ledPin GPIO, som tilsvarer GPIO 16., Kanalen som genererer signalet er ledChannel, som svarer til kanal 0.
ledcAttachPin(ledPin, ledChannel);
I loop, vil du variere driftssyklus mellom 0 og 255 for å øke LED-lys.
Og så, mellom 255 og 0 for å redusere lysstyrken.
for Å angi lysstyrken på LED, du trenger bare å bruke ledcWrite () – funksjonen, som tar som argumenter kanalen som genererer signal, og driftssyklus.
ledcWrite(ledChannel, dutyCycle);
Som vi bruker 8-bits oppløsning, driftssyklus vil bli kontrollert ved hjelp av en verdi fra 0 til 255., Merk at i ledcWrite () – funksjonen vi bruker den kanalen som er å generere signal, og ikke GPIO.
Testing Eksempel
last opp koden til din ESP32. Sørg for at du har rett styre og COM-port er valgt. Se på din krets. Du bør ha en dimmer LED som øker og reduserer lysstyrken.
Få de Samme Signal på Ulike GPIOs
Du kan få det samme signalet fra samme kanal i forskjellige GPIOs., For å oppnå det, du trenger bare å feste de GPIOs til samme kanal på setup().
La oss endre forrige eksempel å dempe 3 Lysdioder bruker samme PWM-signal fra samme kanal.
Skjematisk
Legge til ytterligere to Lysdioder til kretsen din ved å følge neste skjematisk diagram:
(Dette skjema bruker ESP32 DEVKIT V1-modul versjon med 30 GPIOs – hvis du bruker en annen modell, vennligst sjekk den pinout for styret du bruker.,)
– Koden
Kopier koden nedenfor til Arduino IDE.
Vise raw-kode
Dette er den samme koden som den forrige, men med noen modifikasjoner. Vi har definert to eller flere variabler for to nye Leder, som refererer til GPIO 17 og GPIO 5.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
Så, i setup(), har vi lagt til følgende linjer for å tildele både GPIOs til kanal 0. Dette betyr at vi får det samme signalet som blir generert på kanal 0, på begge GPIOs.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
Testing Prosjektet
last opp ny skisse til ESP32., Sørg for at du har rett styre og COM-port er valgt. Nå, ta en titt på din krets:
Alle GPIOs er å gi ut samme PWM-signal. Så, alle tre Lysdioder øke og redusere lysstyrken samtidig, noe som resulterer i en synkronisert effekt.
Innpakning Opp
I sammendraget, i dette innlegget har du lært å bruke LED-PWM-kontrolleren i ESP32 med Arduino IDE å dimme LED., Begrepene har lært kan brukes til å styre andre utganger med PWM-ved å stille de rette egenskapene til signal.
Vi har annen opplæring i slekt med ESP32 du kan også gjerne:
- ESP32 Web Server – Arduino IDE
- ESP32 Data Logging av Temperatur på MicroSD-Kortet
- ESP32 Web-Server med BME280 – Mini værstasjon
- ESP32 vs ESP8266 – Fordeler og Ulemper
Dette er et utdrag fra våre kurs: Lære ESP32 med Arduino IDE. Hvis du liker ESP32 og du ønsker å lære mer, anbefaler vi å melde deg inn i Lære ESP32 med Arduino IDE kurs.