This is an old revision of the document!


Snake Game - Luca David-Ionut 334CD

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:

  1. Butonul conectat la pinul 2 va genera o întrerupere externă INT0.
  2. Butonul conectat la pinul 3 va genera o întrerupere externă INT1.
  3. Butonul conectat la pinul 4 va genera o întrerupere la schimbarea stării pinului (PCINT2)
  4. Butonul conectat la pinul 9 va genera o întrerupere la schimbarea stării pinului (PCINT0)

Î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:

  • GND → GND (Pinul de masă al LCD-ului este conectat la masa Arduino. Acesta este punctul de referință pentru toate tensiunile din circuit.)
  • Vcc → 5V (Pinul de alimentare al LCD-ului este conectat la 5V de pe Arduino.)
  • RS → PIN 10 (Pinul “Register Select” (RS) al LCD-ului este conectat la pinul 10 al Arduino. Acest pin este folosit pentru a diferenția între datele de comandă și datele de afișat trimise către LCD.)
  • R/W → PIN 11 (Pinul “Read/Write” (R/W) al LCD-ului este conectat la pinul 11 al Arduino. Acest pin controlează direcția de transfer al datelor.)
  • E → PIN 13 (Pinul “Enable” (E) al LCD-ului este conectat la pinul 13 al Arduino. Acest pin este folosit pentru a sincroniza transferul de date între Arduino și LCD.)
  • PSB → GND (Pinul “Parallel/Serial Select” (PSB) al LCD-ului este conectat la GND. Acest pin selectează modul de comunicare cu LCD-ul.)
  • RST → PIN 8 (Pinul “Reset” (RST) al LCD-ului este conectat la pinul 8 al Arduino. Acest pin este folosit pentru a reseta LCD-ul, aducându-l într-o stare inițială cunoscută.)
  • BLA → 3.3V (Pinul “Backlight Anode” (BLA) al LCD-ului este conectat la 3.3V. Acesta este pinul pozitiv de alimentare pentru iluminarea de fundal a LCD-ului.)
  • BLK → GND (Pinul “Backlight Cathode” (BLK) al LCD-ului este conectat la GND. Acesta este pinul negativ de alimentare pentru iluminarea de fundal a LCD-ului.)

LCD-ul ST7920 comunică cu placa de dezvoltare Arduino prin protocolul SPI.

Bill of Materials:

Diagrama Bloc a proiectului:

Circuit:

Schema electrică:

Poză:

pm/prj2025/fstancu/david_ionut.luca.1747764955.txt.gz · Last modified: 2025/05/20 21:15 by florin.stancu
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