Snake Game is erg populair sinds het begin van de mobiele telefoons. Aanvankelijk was het verkrijgbaar in zwart-wit mobiele telefoons, en werd al snel erg beroemd. Met de opkomst van de mobiele telefoons is deze game ook veel veranderd, en nu zijn er veel grafische en kleurrijke versies van deze game beschikbaar.
Snake-game is ook een erg populair doe-het-zelf-project geworden voor elektronica-hobbyisten en studenten. Dus vandaag gaan we Arduino Snake Game demonstreren, met al zijn basisfunctionaliteiten, terwijl we het tegelijkertijd simpel houden.
Gebruikte componenten:
- Arduino UNO
- 8x8 LED Dot Matrix-scherm
- Schuifregister 74HC595
- 16x2 LCD
- POT 1K
- Drukknoppen
- Draden aansluiten
- Broodplank
- Stroomvoorziening
Werkende uitleg:
Dit is een klein ingewikkeld spel om te bouwen. Maar in deze tutorial hebben we het u eenvoudig gemaakt. Om dit project te maken, hebben we een 8x8 rode kleur Dot matrix-display gebruikt voor het weergeven van de slang en zijn voedselpunt, een LCD voor het weergeven van de punten of score, 5 drukknoppen om aanwijzingen te geven en het spel te starten en tot slot een Arduino UNO voor het besturen het hele proces. Pin-diagram van 8x8 LED Dot Matrix Display met de originele afbeelding is hieronder weergegeven:
Wanneer we het circuit opstarten, laten we eerst een welkomstbericht zien en vervolgens een "Press Start To Play" -hint op het LCD-scherm. Hierna toont het LCD-scherm de score als nul en toont het puntmatrixscherm twee punten als slang en een enkele punt als voedsel.
Nu moet de gebruiker op de middelste knop drukken om het spel te starten en de slang begint standaard in opwaartse richting te bewegen. Vervolgens moet de gebruiker de slang richting geven door op de 'richtingstoetsen' rond de middelste knop te drukken. Hier hebben we vijf toetsen (drukknoppen) gebruikt namelijk Linker toets, Rechter toets, Omhoog toets, Omlaag toets en Starttoets. Telkens wanneer de slang de voedselpunt bereikt of het voedsel opeet, wordt de score elke keer met 5 punten verhoogd en wordt de lengte van de slang elke keer met een punt (LED) verhoogd, ook wordt de snelheid van de slang sneller dan voorheen. En wanneer de slang tegen een muur zou slaan of aan het einde van de LED-matrix zou reiken, zou het spel eindigen ("Game Over"). Vervolgens moet de gebruiker het spel opnieuw starten door op de starttoets te drukken.
Circuit uitleg:
Het circuit van dit Snake Game Project is weinig complex. Hier hebben we dot-matrix-display aangesloten met behulp van Shift Register 74HC595. Hier worden twee schuifregisters gebruikt, een voor het aandrijven van de kolommen en een tweede voor het aandrijven van de rijen. Besturingspennen van zowel de registers, kolomverschuivingsregister en rijverschuivingsregister (SH, ST),zijn direct verbonden met respectievelijk pin nummer 14 en 16 van Arduino. En de DS-pin van het kolomschuifregister en het rij-schuifregister zijn rechtstreeks verbonden met pin nummer 15 en 17 van Arduino. Startknop voor het starten van het spel is aangesloten op pin nummer 3, linker richtingsknop op pin 4, rechter richtingsknop op pin 6, opwaartse richtingsknop op pin 2 en neerwaartse richtingsknop op pin 5. Een LCD is ook in onze hardware aangesloten op toon score. RS- en EN-pinnen zijn direct aangesloten op pin 13 en 12. RW-pin is direct geaard. En datapinnen d4-d7 zijn aangesloten op pin 11, 10, 9, 8 van Arduino. De rest van de verbinding wordt weergegeven in het schakelschema.
Programmering Toelichting:
Om deze Arduino snake-spelcode te schrijven, voegen we allereerst header-bestanden toe en definiëren we pinnen voor LCD. En definieer vervolgens enkele pinnen voor richtingknoppen en gegevenspin voor schuifregisters.
# omvatten
Vervolgens initialiseren we alle dingen die we in het programma hebben gebruikt. In de setup- functie initialiseren we LCD, geven richting aan input output pinnen, trekken de bits omhoog en tonen welkomstbericht op LCD.
leegte setup () {lcd.begin (16,2); pinMode (ds_col, OUTPUT); pinMode (sh_col, OUTPUT); pinMode (st_col, OUTPUT); pinMode (ds_row, OUTPUT); pinMode (start, INPUT);……………
En dan starten we de game in loop- functie.
void show_snake (int temp) {for (int n = 0; n
Hier hebben we de onderstaande functie gebruikt om de invoerrichting van de drukknop te lezen.
void read_button () {if (! digitalRead (left)) {move_r = 0; move_c! = - 1? move_c = -1: move_c = 1; while (! digitalRead (left));……………
Bekijk de volledige C Code of Snake Game hieronder.