This is an old revision of the document!


Simon Says - Joc de memorie cu LEDs și LCD

Introducere

Proiectul reprezinta un joc de memorie de tip Simon Says implementat pe placa ATmega328P Xplained Mini. Jocul afiseaza o secventa de lumini prin 4 LED-uri colorate (rosu, verde, albastru, galben), iar jucatorul trebuie sa reproduca secventa apasand butoanele corespunzatoare. La fiecare runda reusita, secventa creste cu un pas, iar viteza de afisare creste progresiv, facand jocul din ce in ce mai dificil.

Un ecran LCD 16×2 afiseaza scorul curent, mesaje de stare si cel mai bun scor (pastrat in EEPROM intre resetari). Un buzzer pasiv ofera feedback sonor, cu note diferite pentru fiecare culoare si un sunet de eroare la greseala.

Descriere generala

Jocul functioneaza dupa urmatoarea logica:

  1. LCD afiseaza “Pregateste-te…” si un countdown
  2. Microcontrolerul genereaza un numar random (1-4) si il adauga la secventa
  3. LED-urile se aprind pe rand in ordinea secventei, cu pauze intre ele
  4. Jucatorul apasa butoanele in aceeasi ordine
  5. Daca inputul este corect → nivel urmator (secventa mai lunga, viteza mai mare)
  6. Daca inputul este gresit → buzzer suna, scorul e afisat, jocul se reseteaza

Schema bloc:

[De adaugat]

Hardware Design

Lista de piese:

Componenta Model Rol
Microcontroller ATmega328P Xplained Mini Unitate centrala de control
Display LCD 16×2 Afisare scor si mesaje
Potentiometru 10kΩ Reglaj contrast LCD
LED rosu 5mm + rezistor 220Ω Culoarea 1
LED verde 5mm + rezistor 220Ω Culoarea 2
LED albastru 5mm + rezistor 220Ω Culoarea 3
LED galben 5mm + rezistor 220Ω Culoarea 4
Butoane tactile x4 Input jucator
Buzzer pasiv 5V Feedback sonor
Breadboard + fire Prototipare

Conexiuni principale:

  • LCD RS → D2 (PD2)
  • LCD EN → D3 (PD3)
  • LCD D4-D7 → D4-D7 (PD4-PD7)
  • LCD VDD → 5V, VSS → GND, RW → GND
  • LCD V0 → wiper potentiometru (intre 5V si GND)
  • LED rosu → D8 (PB0) prin rezistor 220Ω
  • LED verde → D9 (PB1) prin rezistor 220Ω
  • LED albastru → D10 (PB2) prin rezistor 220Ω
  • LED galben → D11 (PB3) prin rezistor 220Ω
  • Buton 1 → A0 (PC0) → GND (pull-up intern activat)
  • Buton 2 → A1 (PC1) → GND (pull-up intern activat)
  • Buton 3 → A2 (PC2) → GND (pull-up intern activat)
  • Buton 4 → A3 (PC3) → GND (pull-up intern activat)
  • Buzzer + → D12 (PB4), Buzzer - → GND

Software Design

Mediu de dezvoltare: PlatformIO + framework Arduino (MiniCore)

Periferic Utilizare
Timer1 Generare timinguri non-blocante pentru secventa
GPIO output Control LED-uri
GPIO input (pull-up) Citire butoane
PWM (tone()) Generare note buzzer pasiv
EEPROM Stocare high score intre resetari

Structura software:

  • Masina de stari: IDLE → SHOW_SEQUENCE → WAIT_INPUT → GAME_OVER
  • Secventa stocata intr-un array, lungime crescatoare la fiecare nivel
  • Viteza de afisare scade cu fiecare nivel (dificultate adaptiva)
  • Debounce software pentru butoane
  • Note diferite per culoare: DO, RE, MI, SOL (frecvente fixe)
  • High score salvat in EEPROM, persistent intre resetari

Rezultate Obtinute

(se completeaza dupa finalizarea implementarii)

Concluzii

(se completeaza dupa finalizarea implementarii)

Download

(link catre codul sursa - GitHub)

Jurnal

  • 12.05.2026 — Milestone 1: Documentatie initiala, schema de conectare

Bibliografie/Resurse

pm/prj2026/alexandru.jipa2803/valentina.ceban.1778572947.txt.gz · Last modified: 2026/05/12 11:02 by valentina.ceban
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