This is an old revision of the document!
Acest proiect constă într-o implementare a jocului Snake clasic pe platforma Arduino Uno R3. O caracteristică importantă este controlul vitezei șarpelui prin intermediul unui potențiometru, iar scorul obținut de jucător este vizualizat pe un display LCD.
Milestone 2 (HARDWARE):
Componente: LCD 12864 Albastru ST7920, Modul potentiometru rotativ RV09, 4 x Buton Mini 6x6x5 4 pini.
Am finalizat conexiunile componentelor, configurarea pinilor butoanelor, citirea valorilor potențiometrului și funcționarea display-ului LCD. Partea hardware este completă, urmând să mă concentrez pe implementarea software-ului.
Butoane:
Cele 4 butoane sunt conectate la pinii 2, 3, 4 și 9. Am ales acești pini deoarece:
În acest mod, avem rutine separate (sau mecanisme de identificare) pentru fiecare buton, și nu trebuie să verificăm ce buton a fost apăsat în mod constant în bucla principală a programului. Un pin al fiecărui buton este conectat la ground, iar celălalt este conectat la pinul de intrare respectiv al plăcii. De asemenea, butoanele folosesc rezistențele de pull-up interne ale Arduino.
Potentiometru:
Potențiometrul este conectat astfel: GND la masă, Vcc la 5V, iar ieșirea (OUT) la pinul analogic A0 al Arduino. Valoarea citită de pe potențiometru va fi utilizată pentru a controla viteza șarpelui
LCD-ul:
Pinii LCD-ului ST7920 128×64 sunt conectati de placa Arduino in felul urmator:
LCD-ul ST7920 comunică cu placa de dezvoltare Arduino prin protocolul SPI.
Bill of Materials:
Diagrama Bloc a proiectului:
Circuit:
Schema electrică:
Poză:
MILESTONE 3 - SOFTWARE
Stadiul proiectului
Proiect finalizat cu toate functiile precizate de mai sus complete. Sarpele poate fi controlat, creste, se poate schimba viteza si de asemenea se tine cont de scorul curent si recordul din sesiunea curenta din joc.
Biblioteci
Biblioteca pe care am folosit-o este u8g2. Aceasta faciliteaza accesul la functiile LCD-ului, se poate afisa text usor, forme etc.
Elemente originale
Elementul de unicitate este schimbarea vitezei, nemaintalnind aceasta functionalitate cand am jucat diverite versiuni ale jocului “Snake”.
Concepte aplicate
Ca si concepte dobandite de la laborator am folosit intreruperi, generate de butoane cand sunt apasate. Rutinele de intreruperi schimba directia in care se misca sarpele. Am folosit si SPI, pentru comunicarea dintre placa si LCD, si de asemenea ADC, pentru citirea inputul-ui analog al potentiometrului.
Sumarul scheletului de cod
In functia de loop, capul sarpelui isi actualizeaza coordonatele in functie de directia curenta. Dupa actualizarea pozitiei se verifica urmatoarele:
De asemenea la finalul loop-ului exista un delay de 100ms + map(valoare_ADC) pentru ca viteza sarpelui sa poata fi reglabila.
Un scurt demo al jocului