Snake Game har været meget populær siden begyndelsen af mobiltelefoner. Oprindeligt kom det i sorte og hvide mobiltelefoner og blev snart meget berømt. Derefter med fremskridt med mobiltelefoner har dette spil også ændret sig meget, og nu er der mange grafiske og farverige versioner af dette spil tilgængelige.
Slangespil er også blevet meget populært DIY-projekt for elektronikhobbyister og studerende. Så i dag skal vi demonstrere, Arduino Snake Game, med alle dens grundlæggende funktioner, mens vi holder det simpelt på samme tid.
Brugte komponenter:
- Arduino UNO
- 8x8 LED Dot Matrix Display
- Skiftregister 74HC595
- 16x2 LCD
- POT 1K
- Skub knapper
- Tilslutning af ledninger
- Brødbræt
- Strømforsyning
Arbejdsforklaring:
Dette er lidt kompliceret spil at bygge. Men i denne vejledning har vi gjort det nemt for dig. For at oprette dette projekt har vi brugt en 8x8 rød farvematrix-skærm til at vise slangen og dens madpunkt, en LCD til visning af point eller score, 5 trykknapper til at give anvisninger og starte spillet og til sidst en Arduino UNO til kontrol hele processen. Stiftdiagram over 8x8 LED Dot Matrix Display med dets originale billede er angivet nedenfor:
Når vi tænder for kredsløbet, viser vi først en velkomstmeddelelse og derefter et ”Tryk på Start for at afspille” tip på LCD'et. Herefter viser LCD resultatet som nul, og dotmatrix-display viser to prikker som slange og en enkelt prik som mad.
Nu skal brugeren trykke på den midterste knap for at starte spillet, og slangen begynder som standard at bevæge sig opad. Derefter skal brugeren give retning til slangen ved at trykke på 'Retningstasterne' omkring den midterste knap. Her har vi brugt fem taster (trykknapper), nemlig Venstre-tast, Højre-tast, Op-tast, Ned-tast og Start-tast. Når slangen når ud til madpunktet eller spiser mad, øges scoren med 5 point hver gang, og slangelængden øges med en prik (LED) hver gang, også bliver slangens hastighed hurtigere end før. Og hver gang slange strejker mod en hvilken som helst væg eller når i slutningen af LED-matrix, ville det afslutte spillet ("Game Over"). Derefter skal brugeren starte spillet igen ved at trykke på starttasten.
Forklaring af kredsløb:
Kredsløbet til dette Snake Game Project er lidt komplekst. Her har vi tilsluttet punktmatrixvisning ved hjælp af Shift Register 74HC595. Her bruges to skiftregistre, et til kørsel af søjlerne og et andet til at køre rækkerne. Kontrolstifter i både registre, Column shift register og row shift register (SH, ST),er direkte forbundet med Arduinos pin nummer henholdsvis 14 og 16. Og DS pin af kolonne skift register og række skift register er direkte forbundet til pin nummer 15 og 17 i Arduino. Start-knap til start af spillet er forbundet ved pin nummer 3, venstre retningsknap ved pin 4, højre retningsknap ved pin 6, op retningsknap ved pin 2 og nedretningsknap ved pin 5. En LCD er også forbundet i vores hardware til Vis score. RS- og EN-stifter er direkte forbundet med stift 13 og 12. RW-stiften er direkte jordet. Og datapindene d4-d7 er forbundet ved pin 11, 10, 9, 8 i Arduino. Resten af forbindelsen er vist i kredsløbsdiagrammet.
Programmeringsforklaring:
For at skrive denne Arduino slangespilskode inkluderer vi først headerfiler og definerer pins til LCD. Og definer derefter nogle ben til retningsknapper og datapind til skiftregistre.
#omfatte
Derefter initialiserer vi alle de ting, vi har brugt i programmet. I opsætningsfunktionen initialiserer vi LCD ved at give retning til input output output pins, trække bitene op og vise velkomstbesked på LCD.
ugyldig opsætning () {lcd.begin (16,2); pinMode (ds_col, OUTPUT); pinMode (sh_col, OUTPUT); pinMode (st_col, OUTPUT); pinMode (ds_row, OUTPUT); pinMode (start, INPUT);……………
Og så starter vi spillet i loop- funktion.
ugyldigt show_snake (int temp) {for (int n = 0; n
Her har vi brugt nedenstående funktion til at læse inputretning fra trykknappen.
ugyldig read_button () {if (! digitalRead (venstre)) {move_r = 0; move_c! = - 1? move_c = -1: move_c = 1; mens (! digitalRead (venstre));……………
Tjek den fulde C-kode for slangespil nedenfor.