This is an old revision of the document!


Game Board

Introducere

Proiectul constă într-o tablă interactivă de 8×8, în care fiecare celulă este iluminată folosind LED-uri. Tabla va putea fi folosită pentru a juca diverse jocuri clasice (ex: 4-in-a-row, checkers), dar și pentru a rula diverse animații vizuale.

Scopul proiectului este crearea unei platforme hardware de divertisment retro, controlabilă prin butoane, care să ofere un feedback vizual rapid și fluid. Utilitatea rezidă în combinarea logicii de joc cu controlul matricelor de LED-uri și gestionarea resurselor externe (card SD), rezultând o consolă de jocuri minimalistă.

Descriere generală

Pentru a interacționa cu tabla, vor fi prezente mai multe butoane dedicate comenzilor jucătorilor și pentru selectarea modului de joc dorit. De asemenea, sistemul va integra un modul pentru card SD, permițând încărcarea și rularea unor animații custom-made create de utilizator.

Schema bloc:

Hardware Design

Lista de piese:

  • Microcontroler (ATmega328P)
  • Matrice de LED-uri 8×8
  • Modul Card SD
  • Butoane pentru control
  • Fire de legătură, breadboard

Schema electrică:

Software Design

1. Arhitectură și Controlul Fluxului

Sistemul utilizează o arhitectură monolitică bazată pe stări (State Machine) și principii OOP. Execuția este Time-Triggered (neblocantă), controlată de un Task Scheduler în loop() care impune o frecvență de aproximativ 50 FPS (FRAME_DELAY de 20ms). Memoria este alocată exclusiv static.

2. Componente Hardware & Core

  • Managementul Timpului: Un timer hardware custom (Timer2 prin custom_millis()) previne desincronizările cauzate de biblioteca FastLED, care blochează temporar întreruperile standard.
  • Sistemul de Input: Rulează asincron via Pin Change Interrupts (PCINT2). Aplică un software debounce de 150ms și setează flag-uri logice consumate ulterior sincron în bucla principală.
  • Abstracția Display-ului: Mapare carteziană (X,Y) la index liniar (1D) pentru topologia hardware-ului.

3. Stratul Aplicației

Arhitectura folosește State Pattern și polimorfism prin clasa abstractă de bază App, permițând decuplarea logică și comutarea dinamică între module (aplicații/jocuri). Contractul standard impune următoarele etape:

  • Managementul Stării (init): Gestionează ciclul de viață, alocând și resetând contextul local la activarea modulului.
  • Procesarea Evenimentelor (handleButtons): Decuplează input-ul asincron de logica internă, procesând structura de flag-uri injectată de sistemul de bază.
  • Bucla de Randare (run): Execută algoritmul specific și actualizează buffer-ul vizual la fiecare ciclu de ceas aprobat de planificator.
  • Extensibilitate și Rutare: Comutarea între module se face printr-un pointer global (activeApp), garantând o izolare completă a codului, o adăugare facilă de noi funcționalități și evitând blocajele de execuție.

Funcționalități și concepte de bază folosite pe microcontroler:

  • ISR - Tratarea întreruperilor produse de apăsarea butoanelor pentru un timp de răspuns optim.
  • TIMER - Configurarea unui framerate constant pentru fluiditatea jocurilor și a animațiilor.
  • PWM - Variația intensității luminii produse de LED-uri.
  • SPI - Comunicația rapidă și citirea datelor de animație stocate pe cardul SD.

Download

Work in progress

pm/prj2026/bianca.popa1106/filip_andrei.popa.1779482376.txt.gz · Last modified: 2026/05/22 23:39 by filip_andrei.popa
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