In questo progetto vedremo come visualizzare l’ora e la data su uno schermo LCD. Questo progetto potrebbe essere molto utile per realizzare una sveglia o un semplice orologio. Basta aggiungere delle batterie alla scheda Arduino e stampare una scatola con una stampante 3d per avere un vero e proprio orologio indipendente.

Difficoltà :

Materiali necessari

Vediamo ora l’hardware necessario per il progetto:

  • Scheda Arduino Uno
  • Uno schermo LCD a cristalli liquidi 16×2
  • Un potenziometro
  • Una resistenza da 220 ohm
  • Fili di collegamento (circa quindici!)

Diagramma dell'orologio Arduino

Schéma horloge Arduino

Qual è lo scopo del potenziometro?

Il potenziometro serve a regolare la luminosità dello schermo. È possibile farne a meno collegando 5 V direttamente al filo marrone e il GND che va dal potenziometro allo schermo può essere collegato direttamente alla scheda Arduino.

Programma

#include <LiquidCrystal.h> // Library for LCD Screen

int time_date[6] = {10, 34, 18, 18, 10, 2022}; //second minute hour day month year
int limits[6] = {60, 60, 24, 31, 12, 3000}; // increment limits
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialize the library with the connected pins

void setup() {
  lcd.begin(16, 2); // Initialize the LCD with its dimensions
}

void loop() {
  time_date[0]++; // time increment
    for (int i = 0; i < 6 ; i++){
      if (time_date[i] == limits[i]) { // check limit overflow
        if (i<5) {time_date[i+1]++;}
        time_date[i] = 0;
      }
    }
    lcd.setCursor(0,0); // Position cursor on first line
    for (int j = 3; j < 5; j++) { // display date
      if (time_date[j]<10){
        lcd.print("0");
        lcd.print(time_date[j]);
      }
        else {lcd.print(time_date[j]);}
      lcd.print("/");    
    }
    lcd.print(time_date[5]); 
    lcd.setCursor(0,1); // Position cursor on second line
    for (int j = 2; j >= 0; j--) { // display time
      if (time_date[j]<10)
      {
        lcd.print("0");
        lcd.print(time_date[j]);
      }else {lcd.print(time_date[j]);}
      if (j != 0){
        lcd.print(":"); 
      }   
    }
    delay(250);
}

Modificare la data e l'ora nel programma!

Come si può vedere dall’immagine, la data e l’ora di inizio sono fisse e non sono necessariamente il giorno giusto. È quindi possibile modificare questa data nel programma.

Ecco la riga da modificare:

int time_date[6] = {10, 34, 18, 18, 10, 2022}; //second, minute, hour, day, month, year

Come posso mantenere l'ora corrente quando Arduino è spento?

Come si può vedere, l’orologio e la data non continuano ad aggiornarsi una volta che la scheda Arduino è stata spenta. Questo può essere fastidioso se si sta realizzando un orologio, ad esempio. Per risolvere questo problema, è possibile aggiungere al progetto un modulo orologio rtc (come il DS3231), che calcolerà l’ora anche quando la scheda Arduino è spenta grazie a una batteria indipendente dall’alimentazione della scheda Arduino.

Simulazione