This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:filip_andrei.popa [2026/05/09 14:35] filip_andrei.popa created |
pm:prj2026:bianca.popa1106:filip_andrei.popa [2026/05/23 19:58] (current) filip_andrei.popa |
||
|---|---|---|---|
| Line 12: | Line 12: | ||
| **Schema bloc:** | **Schema bloc:** | ||
| - | // Work in progress // | + | |
| + | {{:pm:prj2026:bianca.popa1106:schema-bloc-filipp.png}} | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| **Lista de piese:** | **Lista de piese:** | ||
| - | * Microcontroler (ex: ATmega324PA) | + | * Microcontroler (ATmega328P) |
| - | * Matrice de LED-uri 8x8 (sau benzi LED adresabile) | + | * Matrice de LED-uri 8x8 |
| * Modul Card SD | * Modul Card SD | ||
| - | * Butoane (Push buttons) pentru control | + | * Butoane pentru control |
| - | * Fire de legătură, breadboard / plăcuță de test | + | * Fire de legătură, breadboard |
| **Schema electrică:** | **Schema electrică:** | ||
| - | // Work in progress // | ||
| - | ===== Software Design ===== | + | {{:pm:prj2026:bianca.popa1106:design-electric2-filipp.png?800|}} |
| - | // Work in progress // | + | |
| + | {{: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. | ||
| Funcționalități și concepte de bază folosite pe microcontroler: | Funcționalități și concepte de bază folosite pe microcontroler: | ||
| Line 33: | 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 // | ||