ESP32 PWM con Arduino IDE (Analog Output)

In questo tutorial vi mostreremo come generare segnali PWM con l’ESP32 utilizzando Arduino IDE. Ad esempio costruiremo un semplice circuito che oscura un LED utilizzando il controller PWM LED dell’ESP32. Ti mostreremo anche come puoi ottenere lo stesso segnale PWM su diversi GPIO allo stesso tempo.

Prima di procedere con questo tutorial si dovrebbe avere l’ESP32 add-on installato nel vostro IDE Arduino., Segui uno dei seguenti tutorial per installare ESP32 sull’IDE Arduino, se non l’hai già fatto.

  • Installazione della scheda ESP32 in Arduino IDE (istruzioni per Windows)
  • Installazione della scheda ESP32 in Arduino IDE (istruzioni per Mac e Linux)

Si consiglia inoltre di dare un’occhiata alle seguenti risorse:

  • Introduzione al modulo ESP32 Dev
  • Pinout ESP32 Riferimento: Quali pin GPIO utilizzare?

Guarda il Video Tutorial

Questo tutorial è disponibile in formato video (guarda sotto) e in formato scritto (continua a leggere).,

Parti

Per seguire questo tutorial hai bisogno di queste parti:

  • ESP32 DOIT DEVKIT V1 Consiglio di leggere meglio ESP32 schede di sviluppo
  • 3 x 5mm LED
  • 3x 330 Ohm
  • Breadboard
  • Jumper fili

È possibile utilizzare il precedente link o andare direttamente a MakerAdvisor.com/tools per trovare tutti i pezzi per i vostri progetti al miglior prezzo!,

ESP32 LED PWM Controller

L’ESP32 ha un LED PWM controller con 16 canali indipendenti che può essere configurato per generare segnali PWM con proprietà diverse.

Ecco i passaggi da seguire per oscurare un LED con PWM utilizzando l’IDE Arduino:

1. Innanzitutto, è necessario scegliere un canale PWM. Ci sono 16 canali da 0 a 15.

2. Quindi, è necessario impostare la frequenza del segnale PWM. Per un LED, una frequenza di 5000 Hz va bene da usare.

3., È inoltre necessario impostare la risoluzione del ciclo di lavoro del segnale: si hanno risoluzioni da 1 a 16 bit. Useremo la risoluzione a 8 bit, il che significa che è possibile controllare la luminosità del LED utilizzando un valore da 0 a 255.

4. Successivamente, è necessario specificare a quale GPIO o GPIO apparirà il segnale. Per questo userai la seguente funzione:

ledcAttachPin(GPIO, channel)

Questa funzione accetta due argomenti. Il primo è il GPIO che emetterà il segnale e il secondo è il canale che genererà il segnale.

5., Infine, per controllare la luminosità del LED utilizzando PWM, si utilizza la seguente funzione:

ledcWrite(channel, dutycycle)

Questa funzione accetta come argomenti il canale che sta generando il segnale PWM, e il duty cycle.

Oscuramento di un LED

Vediamo un semplice esempio per vedere come utilizzare il controller PWM LED ESP32 utilizzando l’IDE Arduino.

Schematico

Collegare un LED al vostro ESP32 come nel seguente diagramma schematico. Il LED deve essere collegato a GPIO 16.,

(Questo schema utilizza il ESP32 DEVKIT V1 versione modulo con 30 Articoli – se si sta utilizzando un altro modello, si prega di controllare la piedinatura per il consiglio che si sta utilizzando.)

Nota: è possibile utilizzare qualsiasi pin desiderato, purché possa fungere da output. Tutti i pin che possono fungere da uscite possono essere utilizzati come pin PWM. Per ulteriori informazioni sui GPIO ESP32, leggere: Pinout ESP32 Riferimento: Quali pin GPIO dovresti usare?

Codice

Apri il tuo IDE Arduino e copia il seguente codice.,

Visualizza il codice raw

Si inizia definendo il pin a cui è collegato il LED. In questo caso il LED è collegato a GPIO 16.

const int ledPin = 16; // 16 corresponds to GPIO16

Quindi, si impostano le proprietà del segnale PWM. Si definisce una frequenza di 5000 Hz, si sceglie il canale 0 per generare il segnale e si imposta una risoluzione di 8 bit. È possibile scegliere altre proprietà, diverse da queste, per generare diversi segnali PWM.,

const int freq = 5000; const int ledChannel = 0; const int resolution = 8;

Nel setup(), è necessario configurare LED PWM con le proprietà che abbiamo definito in precedenza utilizzando la ledcSetup() funzione che accetta come argomenti, il ledChannel, la frequenza e la risoluzione, come segue:

ledcSetup(ledChannel, freq, resolution);

Successivamente, è necessario scegliere il GPIO potrai ottenere il segnale. Per questo utilizzare la funzione ledcAttachPin () che accetta come argomenti il GPIO in cui si desidera ottenere il segnale e il canale che sta generando il segnale. In questo esempio, otterremo il segnale nel ledPin GPIO, che corrisponde a GPIO 16., Il canale che genera il segnale è il ledChannel, che corrisponde al canale 0.

ledcAttachPin(ledPin, ledChannel);

Nel ciclo, varierai il ciclo di lavoro tra 0 e 255 per aumentare la luminosità del LED.

E poi, tra 255 e 0 per diminuire la luminosità.

Per impostare la luminosità del LED, è sufficiente utilizzare la funzione ledcWrite() che accetta come argomenti il canale che sta generando il segnale e il duty cycle.

ledcWrite(ledChannel, dutyCycle);

Poichè stiamo usando la risoluzione di 8 bit, il ciclo di lavoro sarà controllato usando un valore da 0 a 255., Si noti che nella funzione ledcWrite() usiamo il canale che sta generando il segnale, e non il GPIO.

Testando l’esempio

Carica il codice sul tuo ESP32. Assicurati di avere la scheda giusta e la porta COM selezionata. Guarda il tuo circuito. Si dovrebbe avere un LED dimmer che aumenta e diminuisce la luminosità.

Ottenere lo stesso segnale su diversi GPIO

È possibile ottenere lo stesso segnale dallo stesso canale in diversi GPIO., Per ottenere ciò, devi solo collegare quei GPIO allo stesso canale sul setup ().

Modifichiamo l’esempio precedente per dim 3 LED utilizzando lo stesso segnale PWM dallo stesso canale.

Schematica

Aggiungere due Led in più per il tuo circuito, secondo il seguente schema:

(Questo schema utilizza il ESP32 DEVKIT V1 versione modulo con 30 Articoli – se si sta utilizzando un altro modello, si prega di controllare la piedinatura per il consiglio che si sta utilizzando.,)

Codice

Copiare il seguente codice per il vostro Arduino IDE.

Visualizza il codice raw

Questo è lo stesso codice del precedente ma con alcune modifiche. Abbiamo definito altre due variabili per due nuovi LED, che si riferiscono a GPIO 17 e GPIO 5.

const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5

Quindi, nel setup(), abbiamo aggiunto le seguenti righe per assegnare entrambi i GPIO al canale 0. Ciò significa che otterremo lo stesso segnale, che viene generato sul canale 0, su entrambi i GPIO.

ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);

Test del progetto

Carica il nuovo schizzo sul tuo ESP32., Assicurati di avere la scheda giusta e la porta COM selezionata. Ora, dai un’occhiata al tuo circuito:

Tutti i GPIO emettono lo stesso segnale PWM. Quindi, tutti e tre i LED aumentano e diminuiscono la luminosità contemporaneamente, risultando in un effetto sincronizzato.

Wrapping Up

In sintesi, in questo post hai imparato come utilizzare il controller PWM LED dell’ESP32 con l’IDE Arduino per oscurare un LED., I concetti appresi possono essere utilizzati per controllare altre uscite con PWM impostando le giuste proprietà del segnale.

Abbiamo altri tutorial relativi a ESP32 che potrebbero piacerti anche:

  • ESP32 Web Server-Arduino IDE
  • ESP32 Data Logging Temperature to microSD Card
  • ESP32 Web Server con BME280 – Mini Weather Station
  • ESP32 vs ESP8266 – Pro e contro

Questo è un estratto dal nostro corso: Impara ESP32 con Arduino IDE. Se ti piace ESP32 e vuoi saperne di più, ti consigliamo di iscriverti al corso Learn ESP32 with Arduino IDE.

Leave a Comment