لعبة سرعة الاستجابة: انتظار عشوائي
جزء من قسم المشاريع في رحلة 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. هذا الزر لا يرتد، لذا لا يحتاج إلى إزالة الارتداد.
التحدي
متوسطالزر موصول بالدبوس 2 ومصباح LED بالدبوس 12. املأ الحالات الثلاث:
READY: عند الضغط، ابدأ البذرة باستخدامmicros()، واختر مدة انتظار من 1000 إلى 3000 ms، واحفظ وقت البدء، وانتقل إلىWAITINGWAITING: عند انتهاء مدة الانتظار، أضئ مصباح LED وانتقل إلىLITLIT: عند الضغط، أطفئ مصباح 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 وتصبح اللعبة جاهزة مرة أخرى
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المشاريع
2لعبة سرعة الاستجابة
لعبة سرعة الاستجابة: انتظار عشوائيلعبة سرعة الاستجابة: المؤقّتلعبة سرعة الاستجابة: انطلاق مبكرلعبة سرعة الاستجابة: أفضل وقتتدرّب بنفسك: Playground لـ Arduino