This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:toma.ariciu [2026/05/09 23:47] toma.ariciu [Descriere generală] |
pm:prj2026:bianca.popa1106:toma.ariciu [2026/05/09 23:58] (current) toma.ariciu [Software Design] |
||
|---|---|---|---|
| Line 20: | Line 20: | ||
| **Feedback vizual.** Trei LED-uri RGB (câte unul per sector) arată rezultatul comparației dintre timpul nou-măsurat, turul anterior și recordul sesiunii: | **Feedback vizual.** Trei LED-uri RGB (câte unul per sector) arată rezultatul comparației dintre timpul nou-măsurat, turul anterior și recordul sesiunii: | ||
| - | * **Mov** — record absolut pe sectorul respectiv | + | * **Mov** - record absolut pe sectorul respectiv |
| - | * **Verde** — record personal pe sectorul respectiv | + | * **Verde** - record personal pe sectorul respectiv |
| - | * **Galben** — mai lent decât recordul personal | + | * **Galben** - mai lent decât recordul personal |
| **Afișaj.** Un LCD 16×2 conectat prin I²C arată numărul turului curent, timpii pe sectoare în timp real, cel mai bun tur și diferențele față de el. | **Afișaj.** Un LCD 16×2 conectat prin I²C arată numărul turului curent, timpii pe sectoare în timp real, cel mai bun tur și diferențele față de el. | ||
| Line 31: | Line 31: | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | <note tip> | + | ==== Listă de componente ==== |
| - | Aici puneţi tot ce ţine de hardware design: | + | |
| - | * listă de piese | + | |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
| - | * diagrame de semnal | + | |
| - | * rezultatele simulării | + | |
| - | </note> | + | |
| + | ^ Componentă ^ Rol în proiect ^ | ||
| + | | ATmega328P-XMINI | Microcontrolerul care rulează firmware-ul. mEDBG-ul integrat pe placă permite programarea și debugging-ul prin USB. | | ||
| + | | 3× Senzor IR de obstacole (3.3–5 V) | Detectează trecerea vehiculului prin cele trei puncte de control. | | ||
| + | | 3× LED RGB 5 mm cu catod comun | Indicator vizual per sector (mov / verde / galben). | | ||
| + | | 1× LCD 1602 + modul I²C | Afișaj numeric pentru tur, sectoare și delta. | | ||
| + | | 2× Buton PCB tactil (12×12×7.3 mm) | Resetare sesiune și resetare valori salvate. | | ||
| + | |||
| + | ==== Justificarea componentelor ==== | ||
| + | |||
| + | **Senzorii IR de obstacole** au fost aleși pentru că oferă un semnal digital simplu (HIGH/LOW), compatibil direct cu pinii cu întrerupere externă ai ATmega328P. Pragul de detecție se reglează din potențiometrul de pe modul, ceea ce permite calibrarea în funcție de pistă și de obiectul detectat. | ||
| + | |||
| + | **LED-urile RGB cu catod comun** au fost preferate în locul a trei LED-uri colorate separate per sector, pentru ca toate cele trei culori să apară în aceeași poziție fizică. Pentru cele trei culori discrete folosite (mov, verde, galben) este suficient controlul digital pe fiecare canal, fără PWM. | ||
| + | |||
| + | **LCD-ul cu adaptor I²C** reduce numărul de pini ocupați de la șase (mod paralel) la doi (SDA, SCL), eliberând GPIO pentru senzori, LED-uri și butoane. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | **Mediu de dezvoltare:** PlatformIO cu framework-ul MiniCore. | ||
| + | |||
| + | Logica programului se bazează pe măsurarea timpului scurs între întreruperile generate de cei trei senzori IR, folosind Timer1 pe 16 biți ca bază de timp. | ||
| - | <note tip> | + | **Structura algoritmului:** |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| - | </note> | + | |
| + | - Inițializare: configurarea pinilor I/O, a Timer1, a întreruperilor externe pentru senzori și a interfeței I²C pentru LCD. | ||
| + | - Bucla principală: | ||
| + | - Așteptarea unui flag setat de un ISR la trecerea vehiculului prin dreptul unui senzor. | ||
| + | - Calculul timpului pe sectorul închis ca diferență între capturile Timer1. | ||
| + | - Compararea timpului nou cu recordul personal al sesiunii și cu recordul absolut al zilei. | ||
| + | - Actualizarea culorii LED-ului pentru sectorul respectiv (mov / verde / galben). | ||
| + | - Actualizarea afișajului LCD cu turul curent, timpii pe sectoare și delta. | ||
| + | - Tratarea butoanelor (cu debouncing software) pentru reset sesiune și reset valori salvate. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||