#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// إعداد شاشة LCD مع عنوان I2C 0x27، وأبعاد 16×2
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buzzerPin = 8; // دبوس المنبه الصوتي
const int buttonPin = 7; // دبوس الزر
int buttonState = HIGH;
// تعيين عدد الدقائق كمتغير
int delayMinutes = 5; // عدد الدقائق
// تحويل عدد الدقائق إلى ميلي ثانية
int delaySec = delayMinutes * 60;
void setup() {
lcd.init(); // بدء تشغيل شاشة LCD
lcd.backlight(); // تشغيل الإضاءة الخلفية للشاشة
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // استخدام مقاومة سحب داخلية
lcd.setCursor(0, 0);
lcd.print(“Water is good”);
lcd.setCursor(0, 1);
lcd.print(“for health :)”);
}
void loop() {
// قراءة حالة الزر
buttonState = digitalRead(buttonPin);
// إذا كان الزر مضغوطًا، قم بإيقاف المنبه
if (buttonState == LOW) {
noTone(buzzerPin); // إيقاف الصوت
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Thanks!”);
delay(2000); // عرض الرسالة لمدة ثانيتين
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Drink Water Soon”);
} else {
// إذا لم يكن الزر مضغوطًا، شغّل المنبه كل عدد الدقائق المحددة
for(int i=1; i<= delaySec ; i++){
delay(1000);} // تأخير حسب عدد الدقائق
tone(buzzerPin, 1000); // تشغيل الصوت بتردد 1000 هرتز
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Time to hydrate!”);
delay(5000); // عرض الرسالة لمدة 5 ثوانٍ
noTone(buzzerPin); // إيقاف الصوت
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Drink Water Now!”);
}
}