i den här handledningen visar vi hur du genererar PWM-signaler med ESP32 med Arduino IDE. Som ett exempel kommer vi att bygga en enkel krets som dämpar en LED med LED PWM-styrenheten i ESP32. Vi visar dig också hur du kan få samma PWM-signal på olika GPIOs samtidigt.
innan du fortsätter med denna handledning bör du ha ESP32-tillägget installerat i din Arduino IDE., Följ en av följande handledning för att installera ESP32 på Arduino IDE, om du inte redan har.
- installera ESP32-kortet i Arduino IDE (Windows-instruktioner)
- installera ESP32-kortet i Arduino IDE (Mac och Linux-instruktioner)
Vi rekommenderar också att du tittar på följande resurser:
- komma igång med ESP32 Dev-modulen
- ESP32 pinout-referens: vilka GPIO-stift ska du använda?
titta på video Tutorial
denna handledning är tillgänglig i videoformat (titta nedan) och i skriftligt format (Fortsätt läsa).,
delar som krävs
för att följa denna handledning behöver du dessa delar:
- ESP32 doit DEVKIT V1 Board – läs bästa ESP32 utvecklingskort
- 3x 5mm LED
- 3x 330 Ohm motstånd
- brödbräda
- Jumper trådar
Du kan använda föregående länkar eller gå direkt till MakerAdvisor.com/tools för att hitta alla delar för dina projekt till bästa pris!,
ESP32 LED PWM Controller
ESP32 har en LED PWM controller med 16 oberoende kanaler som kan konfigureras för att generera PWM-signaler med olika egenskaper.
här är de steg du måste följa för att dämpa en LED med PWM med Arduino IDE:
1. Först måste du välja en PWM-kanal. Det finns 16 kanaler från 0 till 15.
2. Då måste du ställa in PWM-signalfrekvensen. För en LED är en frekvens på 5000 Hz bra att använda.
3., Du måste också ställa in signalens arbetscykelupplösning: du har upplösningar från 1 till 16 bitar. Vi använder 8-bitars upplösning, vilket innebär att du kan styra LED ljusstyrkan med ett värde från 0 till 255.
4. Därefter måste du ange till vilken GPIO eller GPIOs signalen kommer att visas på. För det använder du följande funktion:
ledcAttachPin(GPIO, channel)
den här funktionen accepterar två argument. Den första är GPIO som kommer att mata ut signalen, och den andra är den kanal som kommer att generera signalen.
5., Slutligen, för att styra LED-ljusstyrkan med PWM, använder du följande funktion:
ledcWrite(channel, dutycycle)
den här funktionen accepterar som argument kanalen som genererar PWM-signalen och tullcykeln.
Dimmer en LED
låt oss se ett enkelt exempel för att se hur du använder ESP32 LED PWM-styrenheten med Arduino IDE.
schematisk
koppla en LED till din ESP32 som i följande schematiska diagram. Lysdioden ska anslutas till GPIO 16.,
(detta schema använder ESP32 DEVKIT V1 – modulversionen med 30 GPIOs-om du använder en annan modell, Kontrollera pinout för kortet du använder.)
Obs: Du kan använda vilken pin du vill, så länge det kan fungera som en utgång. Alla stift som kan fungera som utgångar kan användas som PWM stift. För mer information om ESP32 GPIOs, läs: ESP32 Pinout Referens: Som GPIO stift ska du använda?
kod
öppna din Arduino IDE och kopiera följande kod.,
Visa råkod
du börjar med att definiera stiftet som lysdioden är ansluten till. I detta fall lysdioden är ansluten till GPIO 16.
const int ledPin = 16; // 16 corresponds to GPIO16
sedan ställer du in PWM-signalens egenskaper. Du definierar en frekvens på 5000 Hz, väljer kanal 0 för att generera signalen och ställer in en upplösning på 8 bitar. Du kan välja andra egenskaper, annorlunda än dessa, för att generera olika PWM-signaler.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
i inställningen () måste du konfigurera LED PWM med de egenskaper du har definierat tidigare genom att använda ledcSetup () – funktionen som accepterar som argument, ledchanneln, frekvensen och upplösningen enligt följande:
ledcSetup(ledChannel, freq, resolution);
Därefter måste du välja GPIO du får signalen från. För att använda ledcAttachPin () funktion som accepterar som argument GPIO där du vill få signalen, och den kanal som genererar signalen. I det här exemplet får vi signalen i ledPin GPIO, som motsvarar GPIO 16., Kanalen som genererar signalen är ledkanalen, som motsvarar kanal 0.
ledcAttachPin(ledPin, ledChannel);
i slingan varierar du arbetscykeln mellan 0 och 255 för att öka LED-ljusstyrkan.
och sedan, mellan 255 och 0 för att minska ljusstyrkan.
för att ställa in LED-lampans ljusstyrka behöver du bara använda ledcWrite () – funktionen som accepterar som argument kanalen som genererar signalen och tullcykeln.
ledcWrite(ledChannel, dutyCycle);
eftersom vi använder 8-bitarsupplösning styrs arbetscykeln med ett värde från 0 till 255., Observera att i ledcWrite () – funktionen använder vi kanalen som genererar signalen och inte GPIO.
testa exemplet
Ladda upp koden till din ESP32. Se till att du har rätt styrelse och COM-port vald. Titta på din krets. Du bör ha en dimmer LED som ökar och minskar ljusstyrkan.
få samma Signal på olika GPIOs
Du kan få samma signal från samma kanal i olika GPIOs., För att uppnå det behöver du bara bifoga dessa GPIOs till samma kanal på installationen ().
låt oss ändra föregående exempel för att dämpa 3 lysdioder med samma PWM-signal från samma kanal.
schematisk
Lägg till ytterligare två lysdioder till din krets genom att följa nästa schematiska diagram:
(detta schema använder ESP32 DEVKIT V1 modulversion med 30 GPIOs – om du använder en annan modell, Kontrollera pinout för styrelsen du använder.,)
kod
kopiera följande kod till din Arduino IDE.
Visa råkod
det här är samma kod som den föregående men med vissa ändringar. Vi har definierat ytterligare två variabler för två nya lysdioder, som hänvisar till GPIO 17 och GPIO 5.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
i inställningen () har vi lagt till följande rader för att tilldela båda GPIO: erna till kanal 0. Det betyder att vi får samma signal, som genereras på kanal 0, på båda GPIOs.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
testa projektet
Ladda upp den nya skissen till din ESP32., Se till att du har rätt styrelse och COM-port vald. Ta en titt på din krets:
alla GPIOs sänder samma PWM-signal. Så, alla tre lysdioderna ökar och minskar ljusstyrkan samtidigt, vilket resulterar i en synkroniserad effekt.
avsluta
Sammanfattningsvis har du i det här inlägget lärt dig hur du använder ESP32-LED-PWM-styrenheten med Arduino IDE för att dämpa en LED., De begrepp som lärs kan användas för att styra andra utgångar med PWM genom att ställa in rätt egenskaper till signalen.vi har andra handledning relaterade till ESP32 som du kanske också gillar:
- ESP32 Web Server – Arduino IDE
- ESP32 Dataloggningstemperatur till MicroSD – kort
- ESP32 webbserver med BME280 – Mini väderstation
- ESP32 vs ESP8266-fördelar och nackdelar
detta är ett utdrag ur vår kurs: lär dig ESP32 med Arduino IDE. Om du gillar ESP32 och du vill lära dig mer, rekommenderar vi att du registrerar dig i Learn ESP32 med Arduino IDE course.