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