#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
// LCD pin connections (matches your circuit)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
// WiFi credentials
const char* ssid = "Airtel_arvi_6035";
const char* password = "air26289";
// NTP client setup
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);
// 19800 = IST offset in seconds (UTC+5:30)
// 60000 = update interval in ms
void setup() {
Serial.begin(115200);
// LCD init
display.begin();
display.setContrast(50);
display.clearDisplay();
// WiFi init
WiFi.begin(ssid, password);
display.setCursor(0, 0);
display.println("Connecting WiFi...");
display.display();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
display.clearDisplay();
display.setCursor(0, 0);
display.println("WiFi Connected!");
display.display();
// Start NTP
timeClient.begin();
}
void loop() {
timeClient.update();
// Get current time
int h = timeClient.getHours();
int m = timeClient.getMinutes();
int s = timeClient.getSeconds();
// Convert to 12-hour format
int displayHour = h % 12;
if (displayHour == 0) displayHour = 12;
// Clear display
display.clearDisplay();
// Show time
display.setTextSize(1);
display.setCursor(10, 5);
display.print(displayHour);
display.print(":");
if (m < 10) display.print("0");
display.print(m);
display.print(":");
if (s < 10) display.print("0");
display.print(s);
// AM/PM
display.setCursor(10, 20);
if (h < 12) display.println("AM");
else display.println("PM");
// Signature line
display.setCursor(10, 35);
display.print("arvind");
// Push to LCD
display.display();
delay(1000);
}
https://wokwi.com/projects/466171696519467009