#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
// Replace with your network credentials (Wokwi provides a simulation Wi-Fi)
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Define NTP Client to get time
WiFiUDP ntpUDP;
// Set the offset time in seconds to adjust for your timezone, for UTC+7, the offset is 7 * 3600 seconds
const long utcOffsetInSeconds = 7 * 3600;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds, 60000);
// Define the LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Initialize Serial Monitor
Serial.begin(115200);
// Initialize the LCD
lcd.init();
lcd.backlight();
// Connect to Wi-Fi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Initialize NTPClient
timeClient.begin();
}
void loop() {
timeClient.update();
// Print time to Serial Monitor
Serial.println(timeClient.getFormattedTime());
// Set cursor to first position on the first row
lcd.setCursor(0, 0);
// Print time on the LCD
lcd.print("Time: ");
lcd.print(timeClient.getFormattedTime());
delay(1000);
}