#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// إعداد شاشة LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // عنوان I2C (0x27) وحجم الشاشة (16×2)
// إعداد الطنان
const int buzzerPin = 8;
// إعداد حساس اللمس
const int touchPin = 2;
void setup() {
// إعداد شاشة LCD
lcd.init();
lcd.backlight(); // تشغيل الإضاءة الخلفية للشاشة
// إعداد الطنان
pinMode(buzzerPin, OUTPUT);
// إعداد حساس اللمس
pinMode(touchPin, INPUT);
}
void loop() {
// عرض رسالة الترحيب عند التشغيل
lcd.setCursor(0, 0);
lcd.print(“Welcome to our”);
lcd.setCursor(0, 1);
lcd.print(“office!”);
delay(2000);
// عرض الرسالة لمدة ثانيتين
lcd.clear(); // مسح الشاشة بعد عرض الرسالة الترحيبية
// قراءة حالة حساس اللمس
int touchState = digitalRead(touchPin);
if (touchState == HIGH) {
// إصدار لحن الترحيب
playWelcomeTone();
// عرض رسالة ترحيب على الشاشة
lcd.setCursor(0, 0);
lcd.print(“Hello, Visitor!”);
lcd.setCursor(0, 1);
lcd.print(“Enjoy your visit!”);
delay(2000); // عرض الرسالة لمدة 2 ثانية
lcd.clear(); // مسح الشاشة بعد عرض الرسالة
// انتظار حتى يتم الضغط على الزر مرة أخرى قبل عرض الرسالة مرة أخرى
while (digitalRead(touchPin) == HIGH) {
delay(100); // تجنب قراءة عالية جدًا
}
}
}
void playWelcomeTone() {
// لحن “Twinkle Twinkle Little Star”
int melody[] = {262, 262, 392, 392, 440, 440, 392}; // نغمات C4, G4, A4, F4, E4
int noteDurations[] = {400, 400, 400, 400, 400, 400, 800}; // مدة كل نغمة بالمللي ثانية
for (int i = 0; i < 7; i++) {
tone(buzzerPin, melody[i], noteDurations[i]);
delay(noteDurations[i] * 1.30); // تأخير بين النغمات
}
noTone(buzzerPin); // إيقاف الصوت بعد الانتهاء
}