🔘 Arduino • Input digitale • LED

Pulsante e LED con Arduino: leggere un ingresso digitale

Impariamo a leggere lo stato di un pulsante con Arduino e a usare quel valore per accendere o spegnere un LED, introducendo i concetti fondamentali di input digitale, output digitale, HIGH e LOW.

Difficoltà Principiante
Ingresso Pulsante su pin 7
Uscita LED su pin 13
In poche parole: Arduino legge il pulsante con digitalRead(). Se il valore è HIGH accende il LED; se è LOW lo spegne.

Cosa imparerai

  • la differenza tra ingresso e uscita digitale;
  • come usare pinMode();
  • come leggere un pulsante con digitalRead();
  • come controllare un LED con digitalWrite();
  • come usare una condizione if / else;
  • come interpretare gli stati logici HIGH e LOW.

Come funziona un ingresso digitale

Un ingresso digitale può assumere due stati logici principali: HIGH e LOW. Nel nostro progetto, il pulsante determina quale stato viene letto dal pin 7.

Arduino controlla continuamente il valore del pulsante. Quando rileva lo stato attivo, porta il pin del LED su HIGH; quando il pulsante non è attivo, porta il LED su LOW.

Concetto chiave: il pulsante è un input, mentre il LED è un output. Arduino legge il primo e decide come controllare il secondo.

Materiale necessario

🔌 Arduino Uno
🔘 1 pulsante
💡 1 LED
〰️ 1 resistenza da 220 Ω
🧩 Breadboard
🔗 Cavetti jumper

Kit Arduino consigliato

Se stai iniziando, un kit completo può essere utile perché comprende LED, pulsanti, resistenze, breadboard e molti altri componenti.

🛒 Guarda il kit Arduino consigliato

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Schema di collegamento

Nel progetto originale il LED viene controllato dal pin 13, mentre il pulsante è letto sul pin 7.

Schema Arduino con pulsante e LED

Schema di collegamento del pulsante e del LED ad Arduino.

Codice Arduino commentato

Pulsante e LED con Arduino
// ==========================================================
// PULSANTE E LED CON ARDUINO
// Accensione del LED quando viene premuto il pulsante
// ==========================================================

// Pin digitale collegato al LED
const int ledPin = 13;

// Pin digitale collegato al pulsante
const int buttonPin = 7;

// Variabile che conterrà lo stato del pulsante
int buttonState = LOW;

void setup() {

  // Imposta il pin del LED come uscita
  pinMode(ledPin, OUTPUT);

  // Imposta il pin del pulsante come ingresso
  pinMode(buttonPin, INPUT);

}

void loop() {

  // Legge lo stato logico presente sul pin del pulsante
  // Il risultato può essere HIGH oppure LOW
  buttonState = digitalRead(buttonPin);

  // Se il pulsante risulta attivo...
  if (buttonState == HIGH) {

    // ...accende il LED
    digitalWrite(ledPin, HIGH);

  }
  else {

    // Se il pulsante non è attivo, spegne il LED
    digitalWrite(ledPin, LOW);

  }

}

Il codice spiegato passo passo

1

Definiamo i pin

Il LED utilizza il pin 13 e il pulsante il pin 7. Usare costanti rende il codice più leggibile e facile da modificare.

2

Configuriamo input e output

Con pinMode() impostiamo il LED come uscita e il pulsante come ingresso.

3

Leggiamo il pulsante

digitalRead(buttonPin) restituisce HIGH oppure LOW in base allo stato elettrico presente sul pin.

4

Usiamo if / else

La condizione controlla se il pulsante è attivo e sceglie se accendere o spegnere il LED.

HIGH e LOW: cosa significano

In un ingresso digitale Arduino distingue due stati logici. Per semplicità possiamo pensarli come:

Stato Significato logico Nel progetto
HIGH Livello logico alto LED acceso
LOW Livello logico basso LED spento
Attenzione agli ingressi flottanti: un ingresso digitale non dovrebbe essere lasciato senza un livello elettrico definito. Lo schema del pulsante deve garantire che il pin abbia sempre uno stato stabile quando il pulsante è premuto e quando è rilasciato.

Simulazione online

Puoi provare il circuito con la simulazione Tinkercad originale.

▶️ Apri la simulazione Tinkercad

Scarica lo sketch

⬇️ Scarica led_e_pulsante.ino

Debug rapido

  • controlla che il LED sia collegato nel verso corretto;
  • verifica la resistenza da 220 Ω;
  • controlla il collegamento del pulsante al pin 7;
  • verifica che il LED sia effettivamente controllato dal pin 13;
  • se il LED cambia stato da solo, controlla soprattutto il cablaggio del pulsante;
  • assicurati che il circuito abbia una massa comune.

Variante consigliata: INPUT_PULLUP

Una variante molto utile consiste nell’utilizzare la resistenza di pull-up interna di Arduino. In questo caso la logica si inverte: il pulsante premuto viene normalmente letto come LOW.

Esempio con INPUT_PULLUP
const int ledPin = 13;
const int buttonPin = 7;

void setup() {

  // LED come uscita
  pinMode(ledPin, OUTPUT);

  // Attiva la resistenza di pull-up interna
  pinMode(buttonPin, INPUT_PULLUP);

}

void loop() {

  // Con INPUT_PULLUP il pulsante premuto viene letto come LOW
  int buttonState = digitalRead(buttonPin);

  if (buttonState == LOW) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }

}

Perché INPUT_PULLUP è utile

La modalità INPUT_PULLUP consente di mantenere stabile l’ingresso senza aggiungere necessariamente una resistenza esterna di pull-up. È una tecnica molto comune nei progetti Arduino con pulsanti.

Varianti del progetto

  • accendere due LED con due pulsanti;
  • usare il pulsante per cambiare lo stato del LED a ogni pressione;
  • aggiungere un buzzer;
  • controllare un relè;
  • usare il pulsante per comandare un servomotore;
  • aggiungere il debounce software per evitare letture multiple indesiderate.

Cosa devi ricordare

  • Il pulsante è un ingresso digitale.
  • Il LED è un’uscita digitale.
  • digitalRead() legge HIGH o LOW.
  • digitalWrite() controlla lo stato del LED.
  • if / else permette di reagire allo stato del pulsante.
  • Gli ingressi digitali devono avere sempre uno stato elettrico definito.

Domande frequenti

Perché il LED rimane sempre acceso?

Controlla il collegamento del pulsante e verifica quale stato viene letto dal pin 7 quando il pulsante è rilasciato.

Perché il LED lampeggia o cambia stato senza premere il pulsante?

Probabilmente l’ingresso non ha uno stato stabile. Controlla il circuito del pulsante oppure valuta l’uso di INPUT_PULLUP.

Posso usare un pin diverso dal 7?

Sì. Basta modificare buttonPin e spostare il collegamento fisico sul nuovo pin.

Posso usare il LED integrato di Arduino?

Sì. Sulle schede Arduino Uno il LED integrato è normalmente associato al pin 13, quindi il principio del progetto resta lo stesso.