🎲 ماموریت ۴۷: بازی سایمون
یه دنبالهی رنگی بساز و بذار بازیکن تکرارش کنه. هر دور یکی به دنباله اضافه کن.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ حداقل سه LED
- ☐ حداقل سه دکمه
- ☐ کد از random استفاده کنه
- ☐ کد از آرایه و حلقه استفاده کنه
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- بازر زنگی
- مقاومت 220Ω × ۴
- LED قرمز
- LED سبز
- LED آبی
- LED زرد
- کلید فشاری × ۴
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (D12) ⟷ بازر زنگی (POS)
- بازر زنگی (NEG) ⟷ Arduino Uno (GND1)
- Arduino Uno (D2) ⟷ Resistor (220Ω) (PIN1)
- Resistor (220Ω) (PIN2) ⟷ LED (Red) (ANODE)
- LED (Red) (CATHODE) ⟷ Arduino Uno (GND2)
- Arduino Uno (D8) ⟷ Push Button (PIN_A1)
- Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
- Arduino Uno (D3) ⟷ Resistor (220Ω) (PIN1)
- Resistor (220Ω) (PIN2) ⟷ LED (Green) (ANODE)
- LED (Green) (CATHODE) ⟷ Arduino Uno (GND2)
- Arduino Uno (D9) ⟷ Push Button (PIN_A1)
- Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
- Arduino Uno (D4) ⟷ Resistor (220Ω) (PIN1)
- Resistor (220Ω) (PIN2) ⟷ LED (Blue) (ANODE)
- LED (Blue) (CATHODE) ⟷ Arduino Uno (GND2)
- Arduino Uno (D10) ⟷ Push Button (PIN_A1)
- Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
- Arduino Uno (D5) ⟷ Resistor (220Ω) (PIN1)
- Resistor (220Ω) (PIN2) ⟷ LED زرد (ANODE)
- LED زرد (CATHODE) ⟷ Arduino Uno (GND2)
- Arduino Uno (D11) ⟷ Push Button (PIN_A1)
- Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
کد
const int leds[] = {2, 3, 4, 5};
const int btns[] = {8, 9, 10, 11};
const int notes[] = {262, 330, 392, 523};
const int buzzer = 12;
int sequence[50];
int level = 0;
void play(int i) {
digitalWrite(leds[i], HIGH);
tone(buzzer, notes[i]);
delay(350);
digitalWrite(leds[i], LOW);
noTone(buzzer);
delay(120);
}
int waitForPress() {
while (true) {
for (int i = 0; i < 4; i++) {
if (digitalRead(btns[i]) == LOW) {
play(i);
while (digitalRead(btns[i]) == LOW) { }
return i;
}
}
}
}
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(leds[i], OUTPUT);
pinMode(btns[i], INPUT_PULLUP);
}
randomSeed(analogRead(A0));
Serial.begin(9600);
}
void loop() {
sequence[level] = random(0, 4);
level++;
Serial.print("marhale:");
Serial.println(level);
for (int i = 0; i < level; i++) play(sequence[i]);
for (int i = 0; i < level; i++) {
if (waitForPress() != sequence[i]) {
tone(buzzer, 120, 700);
delay(1200);
level = 0;
return;
}
}
delay(700);
}
ماموریتهای مشابه
⏲️
ماموریت ۴۶: بازی سرعت واکنش
🏡
ماموریت ۴۸: خانهی هوشمند
📈
ماموریت ۴۵: ثبت داده
🏆
ماموریت ۴۹: پروژهی آزاد
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها