#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
//--#include <Wire.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define runLED 13
LiquidCrystal_I2C myLCD(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
RTC_DS1307 myRTC;
void setup() {
pinMode(runLED, OUTPUT);
// Init
myLCD.init();
myLCD.backlight();
myRTC.begin();
//----- RTC Current Time Setting Command ----
// RTC.adjust(DateTime(2022,9,30,18,13,40));
//-- myRTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Print something
myLCD.setCursor(3, 0); myLCD.print("Welcome to IoT!");
myLCD.setCursor(2, 1); myLCD.print("For Smart Farming");
myLCD.setCursor(0, 2); myLCD.print("with Wokwi Simulator");
myLCD.setCursor(7, 3); myLCD.print("Enjoy!");
delay(1000);
myLCD.clear();
}
DateTime now;
void getDateTime(void)
{
DateTime now = myRTC.now();
myLCD.setCursor(0,0); myLCD.print("DATE: ");
myLCD.print(now.year()); myLCD.print("/");
myLCD.print(now.month()); myLCD.print("/"); myLCD.print(now.day());
myLCD.setCursor(0,1); myLCD.print("TIME: ");
myLCD.print(now.hour()); myLCD.print(":"); myLCD.print(now.minute());
myLCD.print(":"); myLCD.print(now.second());
}
unsigned long NowTime,PrevTime;
unsigned char Cx = 0;
void loop() {
NowTime = millis();
if(NowTime >= (PrevTime + 100))
{
if(Cx==0) digitalWrite(runLED, HIGH);
else if(Cx==3) digitalWrite(runLED, LOW);
//------
if(Cx==10)
{
Cx = 0;
getDateTime();
}
else Cx++;
PrevTime = NowTime;
}
}