Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto Esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e anteprime.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.
👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi!
5.8 Regola la Manopola¶
Un potenziometro è un dispositivo a tre terminali comunemente utilizzato per regolare la resistenza in un circuito. Dispone di una manopola o di una leva scorrevole che può essere utilizzata per variare il valore di resistenza del potenziometro. In questo progetto, lo utilizzeremo per controllare la luminosità di un LED, simile a una lampada da scrivania nella nostra vita quotidiana. Regolando la posizione del potenziometro, possiamo cambiare la resistenza nel circuito, regolando così la corrente che scorre attraverso il LED e adattandone la luminosità di conseguenza. Questo ci permette di creare un’esperienza di illuminazione personalizzabile e regolabile, simile a quella di una lampada da scrivania.
Componenti Necessari
In questo progetto, avremo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
ESP32 Starter Kit |
320+ |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
Pin Disponibili
Pin Disponibili
Ecco un elenco dei pin disponibili sulla scheda ESP32 per questo progetto.
Pin Disponibili
IO14, IO25, I35, I34, I39, I36
Pin Strapping
I seguenti pin sono pin di strapping, che influenzano il processo di avvio dell’ESP32 durante l’accensione o il reset. Tuttavia, una volta che l’ESP32 è avviato correttamente, possono essere utilizzati come pin normali.
Pin Strapping
IO0, IO12
Schema
Ruotando il potenziometro, il valore di I35 cambierà. Attraverso la programmazione, puoi utilizzare il valore di I35 per controllare la luminosità del LED. Pertanto, ruotando il potenziometro, la luminosità del LED cambierà di conseguenza.
Collegamento
Codice
Nota
Puoi aprire il file
5.8_pot.inonel percorsoesp32-starter-kit-main\c\codes\5.8_pot.Dopo aver selezionato la scheda (ESP32 Dev Module) e la porta appropriata, fai clic sul pulsante Upload.
Dopo che il codice è stato caricato con successo, ruota il potenziometro e vedrai la luminosità del LED cambiare di conseguenza. Allo stesso tempo, puoi vedere i valori analogici e di tensione del potenziometro nel monitor seriale.
Come funziona?
Definisci le costanti per le connessioni dei pin e le impostazioni PWM.
const int potPin = 35; // Potenziometro collegato a const int ledPin = 26; // LED collegato a // Impostazioni PWM const int freq = 5000; // Frequenza PWM const int resolution = 12; // Risoluzione PWM (bit)
Qui la risoluzione PWM è impostata a 12 bit e l’intervallo è 0-4095.
Configura il sistema nella funzione
setup().void setup() { Serial.begin(115200); // Configura PWM ledcAttach(ledPin, freq, resolution); }
Nella funzione
setup(), la comunicazione seriale viene avviata a una velocità di 115200 baud.La funzione
ledcAttach()viene chiamata per configurare il pin LED specificato con la frequenza e la risoluzione specificate.
Loop principale (eseguito ripetutamente) nella funzione
loop().void loop() { int potValue = analogRead(potPin); // leggi il valore del potenziometro uint32_t voltage_mV = analogReadMilliVolts(potPin); // Leggi la tensione in millivolt ledcWrite(ledPin, potValue); Serial.print("Potentiometer Value: "); Serial.print(potValue); Serial.print(", Voltage: "); Serial.print(voltage_mV / 1000.0); // Convert millivolts to volts Serial.println(" V"); delay(100); }
uint32_t analogReadMilliVolts(uint8_t pin);: Questa funzione viene utilizzata per ottenere il valore ADC per un determinato pin/canale ADC in millivolt.pinseleziona il pin GPIO per leggere il valore analogico.
Il valore del potenziometro viene utilizzato direttamente come ciclo di lavoro PWM per controllare la luminosità del LED tramite la funzione
ledcWrite(), poiché l’intervallo di valori è anch’esso compreso tra 0 e 4095.