I dette projekt ser vi på, hvordan man viser tid og dato på en LCD-skærm. Dette projekt kan være meget nyttigt til at lave et vækkeur eller bare et ur. Det eneste, du skal gøre, er at sætte batterier i Arduino-kortet og printe en kasse med en 3d-printer for at få et rigtigt, selvstændigt ur.

Sværhedsgrad :

Nødvendige materialer

Vi vil nu se på den hardware, der kræves til projektet:

  • Arduino Uno-board
  • En 16×2 LCD-skærm med flydende krystaller
  • Et potentiometer
  • En modstand på 220 ohm
  • Forbindelsesledninger (omkring femten!)

Arduino ur-diagram

Schéma horloge Arduino

Hvad er formålet med potentiometeret?

Potentiometeret bruges til at justere skærmens lysstyrke. Du kan undvære det ved at tilslutte 5V direkte til den brune ledning, og GND, der går fra potentiometeret til skærmen, kan tilsluttes direkte til Arduino-kortet.

Program

#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);
}

Skift tid og dato i programmet!

Som du kan se på billedet, er startdatoen og -tidspunktet fast og ligger ikke nødvendigvis på den rigtige dag. Du kan derfor selv ændre denne dato i programmet.

Her er linjen, der skal ændres:

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

Hvordan kan jeg beholde den aktuelle tid, når Arduino er slukket?

Som du kan se, fortsætter uret og datoen ikke med at blive opdateret, når Arduino-kortet er blevet slukket. Det kan være irriterende, hvis man f.eks. er ved at lave et ur. For at løse dette problem kan du tilføje et rtc-urmodul til projektet (f.eks. DS3231), som beregner tiden, selv når Arduino-boardet er slukket, takket være et batteri, der er uafhængigt af Arduino-boardets strømforsyning.

Simulering