const int buttonPin = 2; // دبوس الزر
const int ledPin = 13; // دبوس الـ LED
bool ledState = false; // حالة الـ LED (مطفي بالبداية)
bool lastButtonState = HIGH; // لأننا نستخدم INPUT_PULLUP، فالزر غير مضغوط = HIGH
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50; // تأخير الديبونس 50 مللي ثانية
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
void loop() {
bool reading = digitalRead(buttonPin);
// إذا تغيرت حالة الزر عن الحالة السابقة
if (reading != lastButtonState) {
lastDebounceTime = millis(); // تحديث زمن التغير
}
// لو مرت مدة الديبونس
if ((millis() - lastDebounceTime) > debounceDelay) {
// إذا كانت القراءة الحالية مختلفة عن حالة الـ LED
if (reading == LOW && lastButtonState == HIGH) {
// اضغط الزر الآن (انتقال من HIGH إلى LOW)
ledState = !ledState; // تبديل حالة الـ LED
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
}
lastButtonState = reading;
}