Simon Hafıza Oyunu
Arduino Nano 33 BLE üzerinde klasik Simon oyununu yapın: her turda bir rastgele renk büyüyen bir renk dizisi, üç LED'de tam zamanlamayla oynatılır, sıçrama filtreli buton basışlarıyla kontrol edilir; zaman aşımı ve skor da vardır.
- Kart
- Nano 33 BLE · Arduino
- Zorluk
- Zor
- Konu
- Data Handling & Algorithms
- Erişim
- Ücretsiz
Görev
Simon Hafıza Oyunu
Klasik hafıza oyuncağı: oyun bir renk dizisini yakıp söndürür, oyuncu bunu butonlarda tekrar eder. Her turda dizi bir renk uzar. Tek bir hata ya da fazla uzun bir duraklama oyunu bitirir.
Donanım
- Arduino Nano 33 BLE (nRF52840, 3,3 V lojik). Seri konsol
Serial1(D0/D1), 115200 baud.SerialUSB'dir ve testlerde görülmez. - Seri dirençle GND'ye bağlı LED'ler,
HIGH= yanık: D2 kırmızı, D3 yeşil, D4 mavi. - GND'ye bağlı butonlar (dahili pull-up kullanın,
LOW= basılı): D8 kırmızı, D9 yeşil, D10 mavi.
Gereksinimler
Kodu sketch/sketch.ino dosyasına (setup() ve loop()) yazın. Renkler 0 = kırmızı, 1 = yeşil, 2 = mavi olarak numaralandırılmıştır (pin tabloları başlangıç dosyasında).
- Açılış.
Serial1'i 115200 baud ile açın, LED'ler sönük, butonlar pull-up'lı;READYyazın ve bir oyun başlatın. - Turlar. Oyun boş bir diziyle başlar. Her tur, önceki tur bittikten (ya da oyun başladıktan) 500 ms sonra başlar: dizinin sonuna bir rastgele renk ekleyin (önceki renkler aynı kalır) ve
PLAY <n>yazın;<n>dizinin uzunluğudur. - Oynatma.
PLAYsatırından itibaren diziyi gösterin: k numaralı renk (0'dan başlar) 600k ms'den 600k + 400 ms'ye kadar yanar; yalnızca o rengin LED'i yanık olur, aralarda tüm LED'ler sönüktür. Son yanışın 200 ms'lik boşluğundan hemen sonraYOUR TURNyazın. - Oyuncunun sırası. Bir basış 20 ms kesintisiz
LOW'dan sonra sayılır (sıçrama yok sayılır). Her basış dizinin sıradaki rengiyle eşleşmelidir.- Tüm renkler doğru:
ROUND <n> OKyazın ve bir sonraki turu başlatın (500 ms sonra). - Yanlış bir renk:
GAME OVER <skor>yazın; skor tamamlanan tur sayısıdır (4. turdaki bir hata 3 puan verir). YOUR TURN'den ya da son basıştan beri 3000 ms basış yok: oyun aynı şekilde biter.
- Tüm renkler doğru:
- Yeni oyun. Oyun bittikten 2000 ms sonra yeni bir oyun başlatın (yeniden 1. tur).
delay()ile akışı durdurmayın.
Örnek konsol çıktısı:
READY
PLAY 1
YOUR TURN
ROUND 1 OK
PLAY 2
YOUR TURN
GAME OVER 1
PLAY 1
delay() olmadan oynatma
Oynatmanın ne zaman başladığını saklayın. t = millis() - başlangıç ile yanış numarası t / 600'dür ve LED t % 600 < 400 iken yanıktır. Yanış numarası dizinin uzunluğuna ulaştığında oynatma biter.
Kablolama
Wiring sekmesinde devreyi kurun: D2, D3, D4'te seri dirençleriyle üç LED, D8 / D9 / D10 ile GND arasında üç buton.
Başarı ölçütleri
- Sketch derlenir.
- Her tur, diziyi baştan (bir öncekinden bir renk daha uzun) her renk için tam 400 ms yanık / 200 ms sönük olarak oynatır.
- Doğru cevaplar turu geçirir; yanlış bir renk ya da 3 s'lik bir duraklama oyunu tamamlanan tur sayısıyla bitirir.
- Oyun bittikten 2 s sonra yeni bir oyun başlar ve sıçrayan butonlar bir kez sayılır.
Neler var
- Firmware'in emüle edilmiş bir kartta derlenip çalıştırılır ve donanım seviyesindeki testlerle kontrol edilir.
- Geliştirme kartı veya yerel kurulum gerekmez.
Gömülüye yeni misin? Yol haritasıyla başla: Gömülü sistemler nasıl öğrenilir