Simon: Przyciski i dźwięki
Część sekcji Projekty ścieżki Arduino w Coddy. Lekcja 13 z 24.
Simon to gra pamięciowa: plansza odtwarza sekwencję kolorowych świateł i dźwięków, a ty powtarzasz ją za pomocą przycisków. W każdej rundzie sekwencja wydłuża się o jeden element, aż popełnisz błąd. Są cztery kolory, a każdy ma swój przycisk, diodę LED i dźwięk.
Przy czterech elementach każdego rodzaju tablice pozwalają skrócić szkic. Element 0 każdej tablicy odpowiada czerwonemu kolorowi, 1 zielonemu, 2 niebieskiemu, a 3 żółtemu, więc jedna liczba, i, oznacza kolor w każdym miejscu:
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};Pętla for sprawdza wszystkie cztery przyciski. Reaguj w dwóch momentach: gdy przycisk zostaje wciśnięty (LOW teraz, HIGH poprzednio) i gdy zostaje zwolniony (HIGH teraz, LOW poprzednio). Tablica lastState przechowuje ostatni odczyt każdego przycisku. W kolejnych krokach naciśnięcie jest zliczane, gdy przycisk zostaje zwolniony. Te przyciski nie drgają, więc sprawdzanie zboczy wystarczy.
Wyzwanie
ŚredniSpraw, by cztery kolory grały:
- w
setup()pętlaforustawia piny LED jako wyjścia, a piny przycisków jakoINPUT_PULLUP - gdy przycisk
izostanie wciśnięty, zaświećledPins[i]i odtwórznotes[i]na pinie 8 - gdy zostanie puszczony, wyłącz diodę LED i wywołaj
noTone()
Naciśnij Run, pobaw się przyciskami, a następnie naciśnij Check.
Spróbuj swoich sił
// Po jednym wpisie na kolor: czerwony, zielony, niebieski, żółty
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C, E, G i wysokie C
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // ostatni odczyt każdego przycisku
void setup() {
// Diody LED są wyjściami, a przyciski używają INPUT_PULLUP
}
void loop() {
// Dla każdego przycisku: gdy zostanie naciśnięty, zapal jego diodę LED i zagraj przypisany mu dźwięk;
// gdy zostanie zwolniony, wyłącz diodę i dźwięk
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projekty
Poćwicz samodzielnie: Edytor online Arduino