Jocul Șarpe a fost foarte popular de la începutul telefoanelor mobile. Inițial a apărut în telefoanele mobile alb-negru și a devenit în curând foarte faimos. Apoi, odată cu avansarea telefoanelor mobile, acest joc s-a schimbat și el mult, iar acum sunt disponibile multe versiuni grafice și colorate ale acestui joc.
Jocul Șarpe a devenit, de asemenea, un proiect DIY foarte popular pentru electronice Hobbyist și Studenți. Așadar, astăzi vom demonstra jocul Arduino Snake, cu toate funcționalitățile sale de bază, menținându-l în același timp simplu.
Componente utilizate:
- Arduino UNO
- Afișaj cu matrice de puncte LED 8x8
- Shift Register 74HC595
- 16x2 LCD
- GHIDUL 1K
- Apasa butoanele
- Conectarea firelor
- Pâine
- Alimentare electrică
Explicație de lucru:
Acesta este un joc puțin complicat de construit. Dar, în acest tutorial, ți-am făcut mai simplu. Pentru realizarea acestui proiect, am folosit un afișaj matricial de 8x8 de culoare roșie pentru afișarea șarpelui și a punctului său alimentar, un LCD pentru afișarea punctelor sau a scorului, 5 butoane pentru a da indicații și a începe jocul și în cele din urmă un Arduino UNO pentru control întregul proces. Diagrama pin a afișajului matricial cu LED-uri 8x8 cu imaginea sa originală a fost prezentată mai jos:
Când pornim circuitul, mai întâi afișăm un mesaj de întâmpinare și apoi un indiciu „Apăsați Start To Play” pe ecranul LCD. După aceasta, ecranul LCD arată scorul zero și afișajul matricial de puncte arată două puncte sub formă de șarpe și un singur punct ca hrană.
Acum utilizatorul trebuie să apese butonul din mijloc pentru a începe jocul și șarpele începe să se deplaseze în direcție ascendentă în mod implicit. Apoi, utilizatorul trebuie să dea direcția șarpelui apăsând butoanele „Direcție” în jurul butonului din mijloc. Aici am folosit cinci taste (butoane) și anume tasta stânga, tasta dreapta, tasta sus, tasta jos și tasta Start. Ori de câte ori șarpele ajunge la punctul alimentar sau mănâncă mâncarea, scorul crește cu 5 puncte de fiecare dată, iar lungimea șarpelui este mărită cu un punct (LED) de fiecare dată, de asemenea viteza șarpelui devine mai rapidă decât înainte. Și ori de câte ori șarpele loveau la orice perete sau ajungeau la capătul matricei LED, atunci se încheia jocul („Game Over”). Apoi utilizatorul trebuie să reia jocul apăsând tasta Start.
Explicația circuitului:
Circuitul acestui proiect Snake Game este puțin complex. Aici am conectat afișajul cu matrice de puncte utilizând Shift Register 74HC595. Aici sunt utilizate două registre de schimbare, unul pentru conducerea coloanelor și al doilea pentru conducerea rândurilor. Pinii de control din ambele registre, registrul de schimbare a coloanei și registrul de schimbare a rândurilor (SH, ST),sunt conectate direct la pinul Arduino numărul 14 și respectiv 16. Și pinul DS al registrului de deplasare a coloanei și registrul de deplasare a rândurilor sunt conectate direct la pinul 15 și 17 al Arduino. Butonul Start pentru a începe jocul este conectat la pinul 3, butonul de direcție stânga la pinul 4, butonul de direcție dreapta la pinul 6, butonul de direcție sus la pinul 2 și butonul de direcție în jos la pinul 5. Un hardware LCD este, de asemenea, conectat în hardware-ul nostru la arată scorul. Pinii RS și EN sunt conectați direct la pinii 13 și 12. Pinul RW este direct împământat. Și pinii de date d4-d7 sunt conectați la pinii 11, 10, 9, 8 din Arduino. Restul conexiunii sunt prezentate în schema circuitului.
Explicație de programare:
Pentru a scrie acest cod de joc de șarpe Arduino, în primul rând includem fișiere antet și definim pini pentru LCD. Și apoi definiți niște pini pentru butoanele de direcție și pini de date pentru registrele de schimbare.
#include
Apoi inițializăm toate lucrurile pe care le-am folosit în program. În funcția de configurare inițializăm LCD, dând direcția pinilor de ieșire de intrare, tragem biții și afișăm mesajul de întâmpinare pe LCD.
void setup () {lcd.begin (16,2); pinMode (ds_col, OUTPUT); pinMode (sh_col, OUTPUT); pinMode (st_col, OUTPUT); pinMode (ds_row, OUTPUT); pinMode (start, INPUT);……………
Și apoi începem funcția de joc în buclă .
void show_snake (int temp) {for (int n = 0; n
Aici am folosit funcția de mai jos pentru citirea direcției de intrare de la buton.
void read_button () {if (! digitalRead (left)) {move_r = 0; move_c! = - 1? move_c = -1: move_c = 1; while (! digitalRead (stânga));……………
Verificați mai jos Codul complet al jocului Snake.