⏲️ ماموریت ۴۶: بازی سرعت واکنش
بعد از یه مکث تصادفی LED روشن بشه؛ زمان تا فشار دکمه رو با millis بسنج.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ یه LED
- ☐ یه دکمه
- ☐ کد از random استفاده کنه
- ☐ کد از millis استفاده کنه
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- کلید فشاری
- مقاومت 220Ω × ۲
- LED سبز
- LED قرمز
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (D2) ⟷ Push Button (PIN_A1)
- Push Button (PIN_A2) ⟷ Arduino Uno (GND1)
- Arduino Uno (D9) ⟷ مقاومت 220Ω (PIN1)
- مقاومت 220Ω (PIN2) ⟷ LED (Green) (ANODE)
- LED (Green) (CATHODE) ⟷ Arduino Uno (GND2)
- Arduino Uno (D10) ⟷ مقاومت 220Ω (PIN1)
- مقاومت 220Ω (PIN2) ⟷ LED (Red) (ANODE)
- LED (Red) (CATHODE) ⟷ Arduino Uno (GND2)
کد
// Reaction time game. Wait random time, green LED on,
// press button before red LED comes on.
const int BUTTON = 2;
const int GREEN = 9;
const int RED = 10;
void setup() {
pinMode(BUTTON, INPUT_PULLUP);
pinMode(GREEN, OUTPUT);
pinMode(RED, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(A0));
}
void loop() {
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
delay(random(1500, 4000));
digitalWrite(GREEN, HIGH);
unsigned long t0 = millis();
// Wait up to 1 second
while (millis() - t0 < 1000) {
if (digitalRead(BUTTON) == LOW) {
Serial.print("Reaction: ");
Serial.print(millis() - t0);
Serial.println(" ms");
delay(2000);
return;
}
}
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
Serial.println("Too slow!");
delay(2000);
}
ماموریتهای مشابه
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها