#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// إعداد شاشة LCD مع عنوان I2C 0x27، وأبعاد 16×2
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buzzerPin = 8; // دبوس المنبه الصوتي
const int redLedPin = 9; // دبوس LED الأحمر
const int greenLedPin = 10; // دبوس LED الأخضر
Servo myServo;
int servoPos = 0;
// تعيين عدد الدقائق كمتغير
int delayMinutes = 5; // عدد الدقائق
// تحويل عدد الدقائق إلى ثوانٍ
int delaySec = delayMinutes * 60;
void setup() {
lcd.init(); // بدء تشغيل شاشة LCD
lcd.backlight(); // تشغيل الإضاءة الخلفية للشاشة
pinMode(buzzerPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
// بداية التشغيل: LED الأخضر مضاء والـ LED الأحمر مطفأ
digitalWrite(greenLedPin, HIGH);
digitalWrite(redLedPin, LOW);
lcd.setCursor(0, 0);
lcd.print(“Reminder to Move”);
lcd.setCursor(0, 1);
lcd.print(“from your chair!”);
myServo.attach(11);
myServo.write(0);
}
void loop() {
// شغل LED الأخضر واغلق LED الأحمر في بداية الدورة
digitalWrite(greenLedPin, HIGH);
digitalWrite(redLedPin, LOW);
// انتظر عدد الثواني المقررة
for(int i = 0; i < delaySec; i++) {
delay(1000); // الانتظار لمدة ثانية واحدة
}
// الآن حان وقت التذكير: شغل LED الأحمر واغلق LED الأخضر
digitalWrite(greenLedPin, LOW);
digitalWrite(redLedPin, HIGH);
tone(buzzerPin, 1000); // تشغيل الصوت بتردد 1000 هرتز
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Time to move!”);
lcd.setCursor(0, 1);
lcd.print(“Get up from chair!”);
myServo.write(90);
delay(3000);
noTone(buzzerPin); // إيقاف الصوت
// بعد انتهاء التذكير، شغل LED الأخضر مجددًا ليدل على عدم الحاجة للانتظار
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
myServo.write(0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Reminder to Move”);
lcd.setCursor(0, 1);
lcd.print(“from your chair!”);
}