Menu
CoddyTech
flag Ar iconالعربيةdown icon

لعبة سرعة الاستجابة: انتظار عشوائي

جزء من قسم المشاريع في رحلة Arduino على Coddy. الدرس 5 من 24.

المشروع التالي هو لعبة لسرعة الاستجابة. تضغط على الزر، وتنتظر اللوحة، ثم تضيء LED، وتضغط مرة أخرى بأسرع ما يمكنك.

مدة الانتظار عشوائية، وإلا فستتعلم الإيقاع. تعطي random(1000, 3001) عددًا صحيحًا من 1000 إلى 3000.

random() عملية حسابية: بعد كل تشغيل، تعطي الأرقام نفسها بالترتيب نفسه. تحدد randomSeed() نقطة بداية هذا التسلسل. استخدم لحظة الضغط، بالميكروثانية، كبذرة، فهي تختلف في كل لعبة:

randomSeed(micros());
waitTime = random(1000, 3001);

اللعبة آلة حالات لها ثلاث حالات: READY (بانتظار الضغط)، وWAITING (الانتظار العشوائي)، وLIT (المصباح مضاء). يستخدم الانتظار millis()، حتى تتمكن الخطوات اللاحقة من مراقبة الزر أثناءه.

يتحقق البرنامج المبدئي بالفعل من pressed: قراءة الزر الآن هي LOW، وكانت قراءته في المرة السابقة HIGH. هذا الزر لا يرتد، لذا لا يحتاج إلى إزالة الارتداد.

challenge icon

التحدي

متوسط

الزر موصول بالدبوس 2 ومصباح LED بالدبوس 12. املأ الحالات الثلاث:

  • READY: عند الضغط، ابدأ البذرة باستخدام micros()، واختر مدة انتظار من 1000 إلى 3000 ms، واحفظ وقت البدء، وانتقل إلى WAITING
  • WAITING: عند انتهاء مدة الانتظار، أضئ مصباح LED وانتقل إلى LIT
  • LIT: عند الضغط، أطفئ مصباح LED وانتقل إلى READY

اضغط Run، والعب بضع جولات، ثم اضغط Check.

جرّب بنفسك

const int ledPin = 12;
const int buttonPin = 2;

// الحالات الثلاث للجولة
enum State { READY, WAITING, LIT };
State state = READY;

int lastButton = HIGH;       // قراءة الزر في المرة السابقة
unsigned long waitStart = 0; // وقت بدء الانتظار
unsigned long waitTime = 0;  // مدة هذا الانتظار

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("Press the button to start");
}

void loop() {
  int button = digitalRead(buttonPin);
  bool pressed = (button == LOW && lastButton == HIGH);  // ضُغط للتو
  lastButton = button;

  // READY: الضغط يبدأ الانتظار
  // WAITING: عند انتهاء الانتظار، أضئ LED
  // LIT: الضغط يطفئ LED وتصبح اللعبة جاهزة مرة أخرى

}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المشاريع

تدرّب بنفسك: Playground لـ Arduino