🎲 ماموریت ۴۷: بازی سایمون

یه دنباله‌ی رنگی بساز و بذار بازیکن تکرارش کنه. هر دور یکی به دنباله اضافه کن.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد

هدف‌ها

قطعه‌های لازم

▶ همین ماموریت را در شبیه‌ساز امتحان کن
💡 گیر کردی؟ داخل شبیه‌ساز راهنما را ببین، و اگر باز هم نشد دکمه‌ی «برام حلش کن» مدار را برایت می‌چیند تا ببینی چطور کار می‌کند.

جواب کامل

اول خودت امتحان کن! بعد جواب را ببین 👀

سیم‌کشی

  1. Arduino Uno (D12) ⟷ بازر زنگی (POS)
  2. بازر زنگی (NEG) ⟷ Arduino Uno (GND1)
  3. Arduino Uno (D2) ⟷ Resistor (220Ω) (PIN1)
  4. Resistor (220Ω) (PIN2) ⟷ LED (Red) (ANODE)
  5. LED (Red) (CATHODE) ⟷ Arduino Uno (GND2)
  6. Arduino Uno (D8) ⟷ Push Button (PIN_A1)
  7. Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
  8. Arduino Uno (D3) ⟷ Resistor (220Ω) (PIN1)
  9. Resistor (220Ω) (PIN2) ⟷ LED (Green) (ANODE)
  10. LED (Green) (CATHODE) ⟷ Arduino Uno (GND2)
  11. Arduino Uno (D9) ⟷ Push Button (PIN_A1)
  12. Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
  13. Arduino Uno (D4) ⟷ Resistor (220Ω) (PIN1)
  14. Resistor (220Ω) (PIN2) ⟷ LED (Blue) (ANODE)
  15. LED (Blue) (CATHODE) ⟷ Arduino Uno (GND2)
  16. Arduino Uno (D10) ⟷ Push Button (PIN_A1)
  17. Push Button (PIN_B1) ⟷ Arduino Uno (GND2)
  18. Arduino Uno (D5) ⟷ Resistor (220Ω) (PIN1)
  19. Resistor (220Ω) (PIN2) ⟷ LED زرد (ANODE)
  20. LED زرد (CATHODE) ⟷ Arduino Uno (GND2)
  21. Arduino Uno (D11) ⟷ Push Button (PIN_A1)
  22. 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);
}

ماموریت‌های مشابه

⏲️

ماموریت ۴۶: بازی سرعت واکنش

🏡

ماموریت ۴۸: خانه‌ی هوشمند

📈

ماموریت ۴۵: ثبت داده

🏆

ماموریت ۴۹: پروژه‌ی آزاد

📚 برای یاد گرفتن پایه‌ها سری به دوره‌ی آموزش آردوینو بزن · 🎯 همه‌ی ماموریت‌ها