Arduino - Memory Game: 4 trin

Arduino - Memory Game: 4 trin

Indholdsfortegnelse:

Anonim

Et simpel memory-spil ved hjælp af Arduino Uno.

forsyninger:

Trin 1: Trin 1: Dele og værktøjer

4 knapper

4 LED'er

1 74HC595 Skiftregistrering

1 Piezo

2 (måske en større) brødbræt

1 Arduino Uno

1 220 Ω Res.

Trin 2: Trin 2: Tips

Prøv at sætte arduino og brødbrødene sammen tidligt. Det er meget lettere at arbejde med.

Jeg brugte lidt af katron, at jeg limede breadboards på og brugte to scews og skruer til at fastgøre arduino.

Når du transporterer dit projekt (måske i et dårligt), skal du sørge for, at arduinoen er godt beskyttet. Snorene kan let forstyrres.

Trin 3: Trin 3: Koden

// Pin forbundet til 12 (ST_CP) af 74HC595 Shift Register

int latchPin = 8; // clockPin forbundet til 11 (SH_CP) på 74HC595 Shift Register int clockPin = 12; //// Pin forbundet til DS af 74HC595 Shift Register int dataPin = 11;

// Variabel hvis spillet er over boolsk gameover = false;

// Array for shiftregister int ledarray 8 = {1,2,4,8,16,32,64,128}; // Variabel for nuværende niveau int niveau = 4; // Reserveret array af de korrekte lysdioder på hvert niveau int randarray1 8; // Antal ledige ledninger int min = 0; int max = 4; // Variabel for hvilken en af ​​knapperne trykkes ind // Variabel for alle LED stifter int knapknapper 8 = {2,3,4,5,6,7, A0, A1};

void setup () {// Indstil pinnarna til skiftregistret pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT);

// Sæt alle lysdioder i PULLUP-tilstand til (int buttpin = 0; buttpin <8; buttpin ++) {pinMode (knapspidser buttpin, INPUT_PULLUP); } // Arduino klar til seriel comunication Serial.begin (9600); }

void loop () {// Hæv spil niveau hvis (niveau <8) {level ++; } // Gør niveauet, så længe der ikke er nogen Gameover hvis (! Gameover) {// Generer ny LED-kombination for niveauet for (int i = 0; i <niveau; i ++) {randarray1 i = tilfældigt; } // Loop for at tænde alle lysdioder på det nuværende niveau for (int numberToDisplay = 0; numberToDisplay <level; numberToDisplay ++) {Serial.println (ledarray randarray1 numberToDisplay); // Sluk strøm til shiftregister readPin, inden vi vælger ny pin digitalWrite (latchPin, LOW); // Marker næste LED med shiftregister shiftOut (dataPin, clockPin, MSBFIRST, ledarray randarray1 numberToDisplay); // Lys den markerede LED i halvdelen af ​​en anden digitalWrite (latchPin, HIGH); forsinkelse (500); // Dræb lyset igen digitalWrite (latchPin, LOW); // Marker den første LED shiftOut (dataPin, clockPin, MSBFIRST, 0); // Tænd den første LED digitalWrite (latchPin, HIGH); // Paus et sekund før næste LED-forsinkelse (1000); }

// Loop for at læse knaptrykt for (int lednr = 0; lednr <level; lednr ++) {// Skriv ud, hvem der er den næste korrekte LED Serial.print ("Next led:"); Serial.println (lednr); // Vent et sekund før næste læseforsinkelse (1000); // Læs knapperne, indtil man trykker på, gør {buttpr = whichbuttonpressed (); } mens (buttpr == 9); // Skriv den aktuelle trykte knap, og hvilken knap er korrekt Serial.print (buttpr); Serial.println (randarray1 lednr); // Afspil lyd til tastetryk (13.660.200); // Hvis den forkerte knap er dens Gameover if (buttpr! = Randarray1 lednr) {gameover = true; // Spil Gameover lyd tone (13,440,1000); Serial.println ("Gameover"); // Annuller sløjfen til læsning af knapper pause; }} Serial.println ("Level ended"); }}

int whichbuttonpressed () {// Gentag over alle knapper og læs for (int buttpin = 0; buttpin <8; buttpin ++) {// Hvis knappen trykkes, skal du returnere værdien af ​​knappen, hvis (digitalRead (knappespidser buttpin) == 0) {return (buttpin); pause; }} // Hvis der ikke trykkes på nogen knap, skal du returnere 9 for at fortsætte med at læse knapperne i loop retur 9; }

Trin 4: Trin 4: Funktion af spillet

Dette lille spil er let at lave. Jeg er sikker på at dine entusiaster vil blive gjort med dette i sandsynligvis inden for en time.

Men spillet er faktisk ret sjovt, og det er meget nyttigt spil i hjernegymnastik.

De fire LED'er i spillet blinker i en tilfældig kombination. Når kombinationen slutter, skal du trykke på den i rækkefølge ved hjælp af de fire knapper. Hver gang du trykker på en knap, kan du høre en lyd. Tryk på den forkerte knap, og du får en tydelig lyd, der indikerer, at det er SPIL OVER! Men hvis du formår at trykke på den rigtige kombination, kommer du til et nyt niveau. Denne gang er kombinationen fem blink. Næste niveau seks, og så videre.

Jeg tror personligt, at denne type spil er nyttigt for ældre mennesker. Måske mennesker med en sygdom, der påvirker deres hukommelse?