Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:bianca.popa1106:filip_andrei.popa [2026/05/16 16:46]
filip_andrei.popa
pm:prj2026:bianca.popa1106:filip_andrei.popa [2026/05/23 19:58] (current)
filip_andrei.popa
Line 17: Line 17:
 ===== Hardware Design ===== ===== Hardware Design =====
 **Lista de piese:** **Lista de piese:**
-  * Microcontroler (ATmega324PA)+  * Microcontroler (ATmega328P)
   * Matrice de LED-uri 8x8   * Matrice de LED-uri 8x8
   * Modul Card SD   * Modul Card SD
Line 25: Line 25:
 **Schema electrică:​** **Schema electrică:​**
  
-{{:​pm:​prj2026:​bianca.popa1106:​design-electric2-filipp.png}}+{{:​pm:​prj2026:​bianca.popa1106:​design-electric2-filipp.png?800|}}
  
-{{:​pm:​prj2026:​bianca.popa1106:​schema-electrica-filipp.png}}+{{:​pm:​prj2026:​bianca.popa1106:​schema-electrica-filipp.png?800|}} 
 + 
 +====== 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.
  
-===== Software Design ===== 
-// Work in progress // 
  
 Funcționalități și concepte de bază folosite pe microcontroler:​ Funcționalități și concepte de bază folosite pe microcontroler:​
Line 37: Line 52:
   * **PWM** - Variația intensității luminii produse de LED-uri.   * **PWM** - Variația intensității luminii produse de LED-uri.
   * **SPI** - Comunicația rapidă și citirea datelor de animație stocate pe cardul SD.   * **SPI** - Comunicația rapidă și citirea datelor de animație stocate pe cardul SD.
- 
-===== Rezultate ===== 
-// Work in progress // 
- 
-===== Concluzii ===== 
-// Work in progress // 
  
 ===== Download ===== ===== Download =====
-// Work in progress ​//+https://github.com/pofian/Game-Board/​tree/​main
  
-===== Bibliografie/​Resurse ===== 
-// Work in progress // 
pm/prj2026/bianca.popa1106/filip_andrei.popa.1778939218.txt.gz · Last modified: 2026/05/16 16:46 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