Nota

Ciao, benvenuto nella Community di Appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi a noi?

  • Supporto esperto: Risolvi problemi post-vendita e 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 l’accesso anticipato a nuovi annunci di prodotti e anteprime.

  • Sconti speciali: Goditi 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.1 Lettura del Valore del Pulsante

In questo progetto interattivo, esploreremo il mondo dei controlli tramite pulsanti e la manipolazione di LED.

Il concetto è semplice ma efficace. Leggeremo lo stato di un pulsante. Quando il pulsante viene premuto, registra un livello di tensione alto, o “stato alto”. Questa azione farà accendere un LED.

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+

ESP32 Starter Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

ESP32 Scheda

ACQUISTA

Estensione Fotocamera ESP32

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Pulsante

ACQUISTA

Pin Disponibili

  • Pin Disponibili

    Ecco un elenco dei pin disponibili sulla scheda ESP32 per questo progetto.

    Per Input

    IO14, IO25, I35, I34, I39, I36, IO18, IO19, IO21, IO22, IO23

    Per Output

    IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

  • Pin a Uso Condizionato (Input)

    I seguenti pin hanno resistori pull-up o pull-down integrati, quindi non sono necessari resistori esterni quando utilizzati come pin di ingresso:

    Pin a Uso Condizionato

    Descrizione

    IO13, IO15, IO2, IO4

    Il pull-up con un resistore da 47K imposta il valore su alto per impostazione predefinita.

    IO27, IO26, IO33

    Il pull-up con un resistore da 4.7K imposta il valore su alto per impostazione predefinita.

    IO32

    Il pull-down con un resistore da 1K imposta il valore su basso per impostazione predefinita.

  • Pin di Strapping (Input)

    I pin di strapping sono un insieme speciale di pin utilizzati per determinare modalità di avvio specifiche durante l’avvio del dispositivo (ad esempio, reset all’accensione).

    Pin di Strapping

    IO5, IO0, IO2, IO12, IO15

    Generalmente, non è raccomandato utilizzarli come pin di ingresso. Se desideri utilizzare questi pin, considera l’impatto potenziale sul processo di avvio. Per maggiori dettagli, consulta la sezione Pin di Strapping.

Schema

../../_images/circuit_5.1_button.png

Per garantire il corretto funzionamento, collega un lato del pin del pulsante a 3.3V e l’altro lato a IO14. Quando il pulsante viene premuto, IO14 sarà impostato su alto, causando l’accensione del LED. Quando il pulsante viene rilasciato, IO14 tornerà al suo stato sospeso, che potrebbe essere alto o basso. Per garantire un livello basso stabile quando il pulsante non è premuto, IO14 dovrebbe essere collegato a GND tramite un resistore pull-down da 10K.

Cablaggio

../../_images/5.1_button_bb.png

Nota

Un pulsante a quattro pin è progettato in forma di H. Quando il pulsante non è premuto, i pin sinistro e destro sono disconnessi e la corrente non può fluire tra di essi. Tuttavia, quando il pulsante viene premuto, i pin sinistro e destro sono collegati, creando un percorso per il flusso di corrente.

Codice

Nota

  • Puoi aprire il file 5.1_button.ino sotto il percorso esp32-starter-kit-main\c\codes\5.1_button.

  • Dopo aver selezionato la scheda (ESP32 Dev Module) e la porta appropriata, clicca sul pulsante Carica.

  • Vedi sempre «COMxx sconosciuto»?

Ricorda di impostare la velocità di comunicazione seriale a 115200.

Una volta che il codice è stato caricato con successo, il LED si accenderà quando premi il pulsante e si spegnerà quando lo rilasci.

Allo stesso tempo, puoi aprire il Monitor Seriale nell’angolo in alto a destra per osservare il valore del pulsante: quando il pulsante viene premuto, verrà stampato «1», altrimenti verrà stampato «0».

../../_images/button_serial.png

Come funziona

I progetti precedenti coinvolgevano l’output di segnali, sia sotto forma di segnali digitali che PWM.

Questo progetto implica la ricezione di segnali di input da un componente esterno alla scheda ESP32. Puoi visualizzare il segnale di input tramite il Monitor Seriale nell’IDE di Arduino.

  1. Nella funzione setup(), il pin del pulsante viene inizializzato come input e il pin del LED viene inizializzato come output. La comunicazione seriale viene anche avviata con una velocità di baud di 115200.

    void setup() {
        Serial.begin(115200);
        // inizializza il pin del pulsante come input
        pinMode(buttonPin, INPUT);
        // inizializza il pin del LED come output
        pinMode(ledPin, OUTPUT);
    }
    
    • Serial.begin(speed): Imposta la velocità di trasmissione dei dati in bit per secondo (baud) per la trasmissione dei dati seriali.

      • speed: in bit per secondo (baud). Tipi di dati ammessi: long.

  2. Nella funzione loop(), lo stato del pulsante viene letto e memorizzato nella variabile buttonState. Il valore di buttonState viene stampato nel Monitor Seriale utilizzando Serial.println().

    void loop() {
        // leggi lo stato del valore del pulsante
        buttonState = digitalRead(buttonPin);
        Serial.println(buttonState);
        delay(100);
        // se il pulsante è premuto, buttonState è HIGH
        if (buttonState == HIGH) {
            // accendi il LED
            digitalWrite(ledPin, HIGH);
    
        } else {
            // spegni il LED
            digitalWrite(ledPin, LOW);
        }
    }
    

    Se il pulsante è premuto e buttonState è HIGH, il LED si accende impostando ledPin su HIGH. Altrimenti, spegni il LED.

    • int digitalRead(uint8_t pin);: Per leggere lo stato di un determinato pin configurato come INPUT, viene utilizzata la funzione digitalRead. Questa funzione restituirà lo stato logico del pin selezionato come HIGH o LOW.

      • pin seleziona il GPIO

    • Serial.println(): Stampa i dati sulla porta seriale come testo ASCII leggibile dall’uomo seguito da un carattere di ritorno a capo (ASCII 13, o “r”) e un carattere di nuova linea (ASCII 10, o “n”).