#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // عنوان شاشة LCD I2C وأبعاد الشاشة
int hours = 11; // الساعات بتنسيق 12 ساعة
int minutes = 0;
int seconds = 0;
int isAm = hours;
long permil, curmil; // Pervece milis & Current milis
const int buttonHour = 2; // زر زيادة الساعات
const int buttonMinute = 3; // زر زيادة الدقائق
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Digital Clock:");
pinMode(buttonHour, INPUT_PULLUP);
pinMode(buttonMinute, INPUT_PULLUP);
permil = millis();
}
void loop() {
curmil = millis();
if (curmil - permil >= 1000)
{
if (digitalRead(buttonMinute) == LOW)
{
minutes++;
}
if (digitalRead(buttonHour) == LOW)
{
hours++;
isAm++;
}
if (seconds >= 60)
{
seconds = 0;
minutes++;
}
if (minutes >= 60)
{
minutes = 0;
hours++;
isAm++;
}
if (hours >= 13)
{
hours = 1;
}
if (isAm >= 25)
{
isAm = 1;
}
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("Time ");
lcd.setCursor(3, 1);
if (hours < 10)
{
lcd.print("0");
}
lcd.print(hours);
lcd.print(":");
if (minutes < 10 )
{
lcd.print("0");
}
lcd.print(minutes);
lcd.print(":");
if (seconds < 10)
{
lcd.print("0");
}
lcd.print(seconds);
if(isAm<12)
{
lcd.print(" AM");
}
else
{
lcd.print(" PM");
}
seconds++;
permil = curmil;
}
}