🚀 Introduzione
Vuoi creare un timer che conta al contrario e suona alla fine?
Con questo progetto Arduino realizzi un vero countdown con buzzer, ideale come timer da cucina, promemoria o base per automazioni temporizzate.
👉 Semplice, pratico e super utile.
Vuoi creare un timer che conta al contrario e suona alla fine?
Con questo progetto Arduino realizzi un vero countdown con buzzer, ideale come timer da cucina, promemoria o base per automazioni temporizzate.
👉 Semplice, pratico e super utile.
🎯 Cosa realizzerai
Con Arduino creerai un sistema che:
Con Arduino creerai un sistema che:
- ⏳ esegue un conto alla rovescia
- 📟 mostra il tempo su display LCD
- 🔔 attiva un buzzer allo scadere
- ⚡ funziona in automatico
🧰 Materiale necessario
- 1x Arduino UNO
- 1x display LCD 16x2 con modulo I2C
- 1x buzzer attivo
- cavetti jumper
- breadboard
🛒 Componenti e risorse consigliate
👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.
📚 I miei libri consigliati
👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg
👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.
📚 I miei libri consigliati
👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg
🔌 Schema di collegamento
Display LCD I2C
Buzzer
Display LCD I2C
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
Buzzer
- + → pin 9
- – → GND
📚 Librerie necessarie
Per questo progetto devi installare:
👉 LiquidCrystal_I2C
Puoi installarla dall’IDE Arduino:
Per questo progetto devi installare:
👉 LiquidCrystal_I2C
Puoi installarla dall’IDE Arduino:
- Sketch → #include libreria → Gestione librerie
- cerca LiquidCrystal I2C
💻 Codice Arduino
// ============================================
// Progetto 111 - Timer countdown con buzzer
// Conto alla rovescia con avviso sonoro finale
// ============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buzzer = 9;
unsigned long tempoPrecedente = 0;
int minuti = 0;
int secondi = 10; // countdown iniziale: 10 secondi
bool timerFinito = false;
void setup() {
pinMode(buzzer, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Countdown");
}
void loop() {
if (!timerFinito) {
unsigned long tempoAttuale = millis();
// Aggiorna il timer ogni secondo
if (tempoAttuale - tempoPrecedente >= 1000) {
tempoPrecedente = tempoAttuale;
if (secondi > 0) {
secondi--;
} else if (minuti > 0) {
minuti--;
secondi = 59;
} else {
timerFinito = true;
}
// Aggiorna il display
lcd.setCursor(0, 1);
if (minuti < 10) lcd.print("0");
lcd.print(minuti);
lcd.print(":");
if (secondi < 10) lcd.print("0");
lcd.print(secondi);
lcd.print(" ");
}
} else {
// Timer terminato: attiva buzzer
lcd.setCursor(0, 1);
lcd.print("Tempo scaduto! ");
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
}
}
// Progetto 111 - Timer countdown con buzzer
// Conto alla rovescia con avviso sonoro finale
// ============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buzzer = 9;
unsigned long tempoPrecedente = 0;
int minuti = 0;
int secondi = 10; // countdown iniziale: 10 secondi
bool timerFinito = false;
void setup() {
pinMode(buzzer, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Countdown");
}
void loop() {
if (!timerFinito) {
unsigned long tempoAttuale = millis();
// Aggiorna il timer ogni secondo
if (tempoAttuale - tempoPrecedente >= 1000) {
tempoPrecedente = tempoAttuale;
if (secondi > 0) {
secondi--;
} else if (minuti > 0) {
minuti--;
secondi = 59;
} else {
timerFinito = true;
}
// Aggiorna il display
lcd.setCursor(0, 1);
if (minuti < 10) lcd.print("0");
lcd.print(minuti);
lcd.print(":");
if (secondi < 10) lcd.print("0");
lcd.print(secondi);
lcd.print(" ");
}
} else {
// Timer terminato: attiva buzzer
lcd.setCursor(0, 1);
lcd.print("Tempo scaduto! ");
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
}
}
⚙️ Come funziona
Il progetto parte da un tempo iniziale impostato nel codice, ad esempio:
Arduino usa millis() per aggiornare il tempo ogni secondo.
👉 Finché il timer non arriva a zero:
👉 Quando il countdown termina:
Il progetto parte da un tempo iniziale impostato nel codice, ad esempio:
- 0 minuti
- 10 secondi
Arduino usa millis() per aggiornare il tempo ogni secondo.
👉 Finché il timer non arriva a zero:
- decrementa secondi e minuti
- aggiorna il display LCD
👉 Quando il countdown termina:
- mostra il messaggio finale
- attiva il buzzer a intervalli
🧠 Perché è un progetto importante
Questo progetto ti insegna:
👉 È la base perfetta per timer reali.
Questo progetto ti insegna:
- gestione di un conto alla rovescia
- utilizzo del display LCD
- attivazione di un allarme sonoro
- logica temporale con millis()
👉 È la base perfetta per timer reali.
🔄 Varianti possibili
Vuoi migliorarlo?
Vuoi migliorarlo?
- 🔘 aggiungi pulsanti per impostare il tempo
- ▶️ pulsante start/stop
- 🔁 reset del countdown
- 📟 visualizzazione ore:minuti:secondi