This shows you the differences between two versions of the page.
|
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 // | ||