This is an old revision of the document!


Dobre Emilia Iliana 333CB

Snake Game 🐍

Introducere

Proiectul meu, Snake Game, este o reinterpretare a clasicului joc Snake, conceput să ofere divertisment și nostalgie. Jucătorul controlează un șarpe într-un mediu închis, cu scopul de a mânca bucăți de “hrană” care apar aleatoriu pe o matrice LED de 8×8. Cu fiecare bucată de hrană consumată, șarpele crește în lungime, iar jocul devine progresiv mai dificil. Obiectivul este să acumulezi cât mai multe puncte posibil, evitând coliziunea cu propriul corp al șarpelui.

Inspirat de jocurile arcade clasice, acest proiect combină nostalgia jocurilor retro cu tehnologia modernă Arduino, oferind o experiență simplă, dar captivantă, accesibilă oricărui entuziast de jocuri sau hobbyist de electronică.

Descriere generală

Proiectul este construit pe o platformă Arduino UNO și utilizează un modul MAX7219 Dot Matrix 8×8 pentru afișarea vizuală a jocului. Controlul șarpelui se face prin intermediul unui joystick care permite mișcarea în sus, jos, stânga sau dreapta.

Șarpele în sine este reprezentat pe matricea de LED-uri ca o serie de lumini aprinse consecutive, care corespund lungimii sale. Lungimea șarpelui crește de fiecare dată când consumă o bucată de “hrană”, care este reprezentată de un LED aprins într-o locație aleatoare pe matrice. Pe măsură ce jucătorul dirijează șarpele prin intermediul joystick-ului, LED-urile care reprezintă corpul șarpelui se aprind și se sting în secvență, reconfigurându-se pentru a ilustra mișcarea acestuia pe matrice. Astfel, când șarpele se mișcă, LED-urile vechi se sting și cele noi se aprind în direcția mișcării.

Hardware Design

Componente folosite și rolul lor în proiect:

  • Arduino UNO: Placa principală care va rula codul jocului.
  • Modul MAX7219 Dot Matrix 8×8: Va afișa starea jocului, inclusiv poziția șarpelui și mâncarea.
  • Joystick Analogic: Permite utilizatorului să controleze direcția șarpelui.
  • LED RGB: Indică diferite stări ale jocului prin schimbarea culorii.
  • Rezistențe: Folosite pentru a limita curentul prin LED-ul RGB.
  • Breadboard
  • Cabluri conectare

Pini folosiți/motivul utilizării acestora:

Arduino Uno are:

  • pini digitali(0-13) care pot fi folosiți pentru a citi sau scrie stări digitale (HIGH sau LOW).
  • pini Digitali cu Funcție PWM care pot genera semnale PWM (Pulse Width Modulation).
  • pini analogici (A0-A5) care sunt folosiți pentru citirea valorilor analogice.

Matricea LED:

 VCC ( Voltage Common Collector) - conectat la pinul de 5V al Arduino asigura alimentarea necesară funcționării matricei de LED-uri.
 GND ( Ground) - punctul de referință de tensiune zero în circuit, astfel GND al matricei LED MAX72XX este conectat la pinul GND al Arduino
 DIN (Data In) - conectat la pinul digital 12 de pe Arduino: folosit pentru a trimite date către matrice.
 CS (Chip Select) - conectat la pinul digital 11 de pe Arduino: folosit pentru a selecta matricea activă.
 CLK (Clock) - conectat la pinul digital 10 de pe Arduino: folosit pentru a trimite semnale de sincronizare către matrice.
 

Joystick analogic:

 VCC -  conectat la pinul 5V al Arduino, alimentare joystick
 GND - conectat la pinul GND al Arduino.
 VRx - conectat la pinul analogic A3 al Arduino pentru a permite Arduino să citească valoarea analogică corespunzătoare poziției pe axa X.
 VRY - conectat la pinul analogic A4 al Arduino pentru  a permite Arduino să citească valoarea analogică corespunzătoare poziției pe axa Y.
 

LED RGB:

 Catod comun: conectat la pinul GND al Arduino pentru a oferi o referință de tensiune zero comună pentru toate cele trei LED-uri interne.
 Roșu: pin 7
 Verde: pin 6
 Albastru: pin 5
 Rezistențe de 220Ω: rotejează LED-ul de curentul excesiv 
 Pinii digitali 5,6,7 controlează intensitatea lumininilor folosind semnale PWM de la Arduino.
 

Schema hardware:

Schema electrica:

Testare functionalitate:

Software Design

Mediu de dezvoltare:

  • Arduino IDE care oferă o platformă accesibilă și ușor de utilizat, cu suport pentru compilarea și încărcarea codului direct pe placa Arduino.

Biblioteci Utilizate

  • LedControl: Aceasta bibliotecă este esențială pentru controlul modulului MAX7219 Dot Matrix. Permite manipularea ușoară a LED-urilor pe matrice, inclusiv aprinderea și stingerea acestora, ceea ce este crucial pentru vizualizarea șarpelui și a mâncării în joc.

Descrierea Codului Aplicației (Firmware)

  • Inițializarea Sistemului: Configurarea pinilor folosiți, inițializarea matricei de LED-uri și stabilirea stării inițiale a jocului.
  • Logica Jocului: Implementarea mecanicii de bază a jocului Snake. Aceasta include mișcarea șarpelui, consumul mâncării, creșterea în lungime, și gestionarea coliziunilor cu marginile matricei sau cu corpul șarpelui.
  • Controlul Utilizatorului: Citirea inputurilor de la joystick pentru a determina direcția de mișcare a șarpelui.
  • Afisarea Stării Jocului: Actualizarea continuă a matricei de LED-uri pentru a reflecta poziția șarpelui și a mâncării pe matrice.
  • Gestionarea Sfârșitului Jocului: Detectarea condițiilor de terminare a jocului și afișarea unui mesaj sau efect corespunzător pe matricea de LED-uri.

Algoritmi și Structuri Propuse

  • Algoritmul de Mișcare a Șarpelui: Un algoritm simplu de coadă care reține coordonatele segmentelor corpului șarpelui.
  • Generarea Aleatoare a Mâncării: Un mecanism pentru plasarea aleatorie a mâncării pe matrice, asigurându-se că aceasta nu apare pe corpul șarpelui.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

Jurnal

  • 24.04.2024: Alegere tema proiect
  • 01.05.2024: Cumparare componente
  • 05.05.2024: Scriere documentatie
  • 17.05.2024: Creare repo github
  • 17.05.2024: Adaugare sectiuni lipsa
  • 19.05.2024: Creare schema electrica
  • 20.05.2024: Testare conectivitate componente

TODO:

  • Finalizare hardware, incepere software
  • Research, scriere cod
  • Adaugare concluzii in documentatie

Bibliografie/Resurse

pm/prj2024/ccontasel/emilia_iliana.dobre.1716232265.txt.gz · Last modified: 2024/05/20 22:11 by emilia_iliana.dobre
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0