#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <Wire.h>
#include "RTClib.h"
// LCD pin connections (matches your circuit)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
// RTC instance
RTC_DS1307 rtc;
// Time set button pins
const int hs = 8; // Hour set button
const int ms = 9; // Minute set button
void setup() {
// Initialize LCD
display.begin();
display.setContrast(50);
display.clearDisplay();
// Initialize RTC
if (!rtc.begin()) {
display.setCursor(0, 0);
display.println("RTC not found!");
display.display();
while (1);
}
if (!rtc.isrunning()) {
// Set RTC to compile time if not running
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Button inputs
pinMode(hs, INPUT);
pinMode(ms, INPUT);
}
void loop() {
// Read current time from RTC
DateTime now = rtc.now();
// Clear display buffer
display.clearDisplay();
// Display hours, minutes, seconds
display.setTextSize(1);
display.setCursor(10, 5);
int h = now.hour();
int m = now.minute();
int s = now.second();
// Convert to 12-hour format
int displayHour = h % 12;
if (displayHour == 0) displayHour = 12;
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);
// Display AM / PM
display.setCursor(10, 20);
if (h < 12) display.println("AM");
else display.println("PM");
// Message line
display.setCursor(10, 35);
display.print("arvind");
// Push data to LCD
display.display();
// ----------- Time Setting Section ----------- //
if (digitalRead(hs) == HIGH) {
// Add one hour
DateTime newTime = now + TimeSpan(3600);
rtc.adjust(newTime);
delay(300); // debounce
}
if (digitalRead(ms) == HIGH) {
// Add one minute
DateTime newTime = now + TimeSpan(60);
rtc.adjust(newTime);
delay(300); // debounce
}
delay(200); // small refresh delay
}
Loading
nokia-5110
nokia-5110
https://wokwi.com/projects/466171696519467009