// Autor / Auteur : Zineb KANDOUSSI (https://www.facebook.com/SchoolSurSeineFR/)
// Creation / Création : Le 21/04/2023
// Description : Display the current time, date and temperature on the 20x4 LCD screen / Affichage de l'heure actuelle, la date et la température sur l'écran LCD 20x4
// Inspired from this code : File => Examples => RTClib => ds3231 / inspiré de ce code : Fichier => Exemples => RTClib => ds3231
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0X27, 20, 4);
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
byte char_temp[8]={B00100,B01010,B01010,B01110,B01110,B11111,B11111,B01110}; // for thermometer icon / pour l'icône du thermomètre
void setup()
{
rtc.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0,char_temp);
lcd.setCursor(0, 0);
lcd.print(" RAMA NIVASA");
lcd.setCursor(0, 1);
lcd.print("SANUR KARKALA 574114");
lcd.setCursor(0, 2);
lcd.print("Shree Maha Ganapathi");
lcd.setCursor(0, 3);
lcd.print("Shri Maha Maya Namah");
delay(8000);
lcd.clear();
if (rtc.lostPower()) {
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop()
{
DateTime now = rtc.now();
//lcd.setCursor(column,row);
//------------------------------Date display - Affichage de la date-----------------------------//
lcd.setCursor(6,0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.setCursor(0,2);
lcd.print("Date:");
lcd.setCursor(6,2);
if (now.day() <=9 )
{
lcd.print("0");
lcd.setCursor(7,2);
lcd.print(now.day(),DEC);
}
else {lcd.print(now.day(),DEC);}
lcd.setCursor(8,2);
lcd.print(":");
lcd.setCursor(9,2);
if (now.month() <=9 )
{
lcd.print("0");
lcd.setCursor(10,2);
lcd.print(now.month(),DEC);
}
else {lcd.print(now.month(),DEC);}
lcd.setCursor(11,2);
lcd.print(":");
lcd.setCursor(12,2);
lcd.print(now.year(),DEC);
//------------------------------Time dsiplay - Affichage du temps-----------------------------//
lcd.setCursor(0, 1);
lcd.print("Time:");
lcd.setCursor(6,1);
if (now.hour() <=9 )
{
lcd.print("0");
lcd.setCursor(7,1);
lcd.print(now.hour(),DEC);
}
else {lcd.print(now.hour(),DEC);}
lcd.setCursor(8,1);
lcd.print(":");
lcd.setCursor(9,1);
if (now.minute() <=9 )
{
lcd.print("0");
lcd.setCursor(10,1);
lcd.print(now.minute(),DEC);
}
else {lcd.print(now.minute(),DEC);}
lcd.setCursor(11,1);
lcd.print(":");
lcd.setCursor(12,1);
if (now.second() <=9 )
{
lcd.print("0");
lcd.setCursor(13,1);
lcd.print(now.second(),DEC);
}
else {lcd.print(now.second(),DEC);}
//------------------------------Temperature display - Affichage de la température-----------------------------//
lcd.setCursor(0,3);
lcd.print("Temp:");
lcd.setCursor(6,3);
lcd.print(rtc.getTemperature());
lcd.setCursor(11,3);
lcd.write((char)223);
lcd.setCursor(12,3);
lcd.print("C");
lcd.setCursor(15,3);
lcd.print(char(0));
}