int ledPin = 13; // LED إلى الدبوس 13
int buttonPin = 2; // الزر إلى الدبوس 2
int buttonState = 0; // حالة الزر
unsigned long startTime; // وقت بداية اللعبة
unsigned long delayTime; // وقت التأخير العشوائي
int score = 0; // النقاط
void setup() {
pinMode(ledPin, OUTPUT); // تحديد الـ LED كدبوس خرج
pinMode(buttonPin, INPUT_PULLUP); // تحديد الزر كمدخل مع مقاومة داخلية
Serial.begin(9600); // بدء الاتصال التسلسلي للطباعة
randomSeed(analogRead(0)); // لتوليد أرقام عشوائية
}
void loop() {
// توليد وقت تأخير عشوائي بين 1 و 3 ثواني
delayTime = random(1000, 3000);
digitalWrite(ledPin, LOW); // إيقاف الـ LED
delay(delayTime); // الانتظار
// تشغيل الـ LED
digitalWrite(ledPin, HIGH);
startTime = millis(); // حفظ الوقت عندما بدأ الـ LED بالاضاءة
// الانتظار لعدة ثوانٍ للضغط على الزر
while (digitalRead(buttonPin) == HIGH) {
if (millis() - startTime > 5000) { // إذا مر أكثر من 5 ثوانٍ دون الضغط
digitalWrite(ledPin, LOW); // إيقاف الـ LED
Serial.println("خسارة! لم تضغط في الوقت المحدد");
delay(1000);
break;
}
}
// إذا تم الضغط على الزر في الوقت المحدد
if (digitalRead(buttonPin) == LOW && millis() - startTime <= 5000) {
digitalWrite(ledPin, LOW); // إيقاف الـ LED
score++; // إضافة نقطة
Serial.print("نقطة! النقاط: ");
Serial.println(score);
delay(1000); // الانتظار قبل أن تبدأ الجولة التالية
}
}