#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // استخدم 0x3F إذا لم يعمل 0x27
const int trigPin = 12;
const int echoPin = 13;
const int ledPin = 4;
const int buzzerPin = 3;
long duration;
int distance;
bool wasAlerted = false;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
lcd.init();
lcd.backlight();
// Gentle welcome
lcd.setCursor(0, 0);
lcd.print(“Salam Alaikum :)”);
lcd.setCursor(0, 1);
lcd.print(“Please get ready”);
tone(buzzerPin, 400, 150); // Soft tone
digitalWrite(ledPin, HIGH); delay(150);
digitalWrite(ledPin, LOW);
delay(2000);
lcd.clear();
}
void loop() {
// Read distance
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
if (distance <= 5 && !wasAlerted) {
// Gentle alert once
lcd.setCursor(0, 0);
lcd.print(“Phone off please”);
lcd.setCursor(0, 1);
lcd.print(“Respect Masjid”);
tone(buzzerPin, 350, 200); // Very soft tone
digitalWrite(ledPin, HIGH); delay(150);
digitalWrite(ledPin, LOW);
wasAlerted = true; // Prevent repeat alerts
}
if (distance > 5) {
lcd.clear();
wasAlerted = false;
noTone(buzzerPin);
digitalWrite(ledPin, LOW);
}
delay(300);
}