PROGETTI ARDUINO

  • HOME
  • 200 Progetti
  • PROGETTI E TUTORIAL
  • PROGETTI E TUTORIAL 2
  • ELETTRONICA
  • RECENSIONI
  • MANUALE
  • CONTATTI
  • HOME
  • 200 Progetti
  • PROGETTI E TUTORIAL
  • PROGETTI E TUTORIAL 2
  • ELETTRONICA
  • RECENSIONI
  • MANUALE
  • CONTATTI

Progetto 110
​Cronometro con display LCD

🚀 Introduzione
​

Vuoi costruire un vero cronometro con Arduino? ⏱️

Con questo progetto realizzi un sistema che avvia, ferma e resetta il tempo, mostrando tutto su un display LCD.

È molto più avanzato di un semplice timer: qui controlli il tempo in modo interattivo.
​
👉 Perfetto per allenamenti, esperimenti o test.

🎯 Cosa realizzerai
​

Con Arduino creerai un sistema che:
  • ⏱️ misura il tempo in modo preciso
  • ▶️ avvia e ferma il cronometro
  • 🔄 permette il reset
  • 📟 mostra il tempo su display LCD 

​🧰 Materiale necessario
​
  • 1x Arduino UNO
  • 1x display LCD 16x2 con modulo I2C
  • 2x pulsanti (start/stop + reset)
  • cavetti jumper
  • breadboard 
🛒 Componenti e risorse consigliate

👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Molti kit includono display LCD e pulsanti, ideali per questo progetto.

📚 Libri utili per imparare Arduino in modo pratico

👉 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

📚 Librerie necessarie
​

👉 LiquidCrystal_I2C
Installazione:
  • IDE Arduino → Gestione librerie
  • cerca LiquidCrystal I2C

🔌 Schema di collegamento

Display LCD I2C
  • VCC → 5V
  • GND → GND
  • SDA → A4
  • SCL → A5
​
Pulsanti
  • Pulsante START/STOP → pin 2
  • Pulsante RESET → pin 3
    👉 collegati a GND (INPUT_PULLUP)
Foto

💻 Codice Arduino
​// ============================================
// Progetto 110 - Cronometro con display LCD
// Start, stop e reset con pulsanti
// ============================================

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int btnStart = 2;
const int btnReset = 3;

unsigned long tempoInizio = 0;
unsigned long tempoCorrente = 0;

bool inEsecuzione = false;

void setup() {
  pinMode(btnStart, INPUT_PULLUP);
  pinMode(btnReset, INPUT_PULLUP);

  lcd.init();
  lcd.backlight();

  lcd.setCursor(0, 0);
  lcd.print("Cronometro");
}

void loop() {
  // Pulsante START/STOP
  if (digitalRead(btnStart) == LOW) {
    delay(200); // debounce

    if (!inEsecuzione) {
      tempoInizio = millis() - tempoCorrente;
      inEsecuzione = true;
    } else {
      inEsecuzione = false;
    }
  }

  // Pulsante RESET
  if (digitalRead(btnReset) == LOW) {
    delay(200); // debounce

    tempoCorrente = 0;
    tempoInizio = millis();
  }

  // Calcolo tempo
  if (inEsecuzione) {
    tempoCorrente = millis() - tempoInizio;
  }

  int secondi = (tempoCorrente / 1000) % 60;
  int minuti = (tempoCorrente / 60000);

  // Visualizzazione
  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("   ");
}

⚙️ Come funziona
​

Il cronometro utilizza millis() per contare il tempo senza bloccare il programma.
👉 Pulsante START:
  • avvia o ferma il cronometro

👉 Pulsante RESET:
  • azzera il tempo
​
👉 Il display mostra:
MM:SS
​

💡 Il sistema mantiene il tempo anche quando viene fermato (non si azzera).

🧠 Perché è un progetto importante
​

Impari:
  • gestione input (pulsanti)
  • debounce
  • gestione tempo avanzata
  • interfaccia utente base
​
👉 È un vero sistema interattivo.

🔄 Varianti possibili
​

Vuoi migliorarlo?
  • ⏱️ aggiungi millisecondi
  • 🔊 buzzer → segnale sonoro
  • 📟 display OLED → grafica migliore
  • 🧠 salva tempo in memoria 

Foto

© ProgettiArduino.com 2026 - Fancello Salvatore
​ Layout, immagini e testi sono di esclusiva proprietà di www.progettiarduino.com 
Privacy Policy