This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.predescu:bogdan.andrei0509 [2026/05/26 14:46] bogdan.andrei0509 [Arhitectura Functiilor] |
pm:prj2026:alexandru.predescu:bogdan.andrei0509 [2026/05/26 17:17] (current) bogdan.andrei0509 |
||
|---|---|---|---|
| Line 91: | Line 91: | ||
| ==== Fluxul de Executie ==== | ==== Fluxul de Executie ==== | ||
| - | 1. **Etapa de Initializare:** La alimentarea placii, se apeleaza ''Hardware_Init'' care configureaza registrele de directie (DDRD, DDRC) si pregateste comunicarea cu ecranul si senzorii. | + | 1. **Etapa de Initializare:** La alimentarea placii, se configureaza perifericele prin functiile de initializare: ''I2C_init()'' si ''LCD_init()'' pentru pornirea ecranului, ''ADC_init()'' pentru senzorii de lumina si ''Interrupt_init()'' pentru activarea butoanelor pe pinii de intreruperi externe (PD2 si PD3). Tot acum se seteaza pinii de iesire pentru LED-uri, buzzer si servomotor (DDRB si DDRD). |
| - | 2. **Etapa de Scanare (Loop):** In bucla infinita, se apeleaza ciclic ''Actualizeaza_Locuri_Si_Numara'' pentru a verifica statusul celor 4 locuri. Datele sunt procesate si trimise instant catre LCD prin ''LCD_Afiseaza_Locuri''. | + | 2. **Etapa de Scanare si Monitorizare (Loop):** In bucla principala ''main()'', microcontrolerul citeste ciclic starea celor 4 senzori LDR folosind ''ADC_read()''. In functie de pragul de lumina, algoritmul aprinde LED-ul corespunzator (Verde pentru loc liber, Rosu pentru loc ocupat) si calculeaza in timp real numarul total de ''locuri_libere''. |
| - | 3. **Etapa de Decizie:** Sistemul monitorizeaza pinul butonului (PD6). La apasare, algoritmul verifica variabila de locuri libere: daca este > 0, se apeleaza ''Bariera_Deschide''; in caz contrar, se declanseaza ''Buzzer_Sunet_Eroare''. | + | 3. **Etapa de Afisare:** Datele procesate sunt trimise catre ecranul LCD 1602 prin functiile ''LCD_command()'' si ''LCD_print()''. Daca mai exista locuri, se afiseaza numarul lor; daca parcarea este plina, pe ecran va aparea mesajul "PARCARE PLINA!". |
| + | 4. **Etapa de Eveniment (Intreruperi):** Sistemul reactioneaza instant la actiunile soferilor prin rutinele de intrerupere: | ||
| + | * **La apasarea butonului de Intrare (INT0):** Daca sunt locuri libere, se activeaza flag-ul ''bariera_activa'', se afiseaza mesajul de bun venit si se apeleaza ''servo_pozitie_sus()''. Daca parcarea e plina, se activeaza flag-ul ''parcare_plina_bip'' si buzzerul emite 3 semnale sonore scurte de respingere. | ||
| + | * **La apasarea butonului de Iesire (INT1):** Se ridica automat bariera pentru a permite iesirea masinii, afisand mesajul de drum bun. | ||
| + | |||
| + | 5. **Etapa de Resetare Bariera:** Dupa ce masina a trecut si timpul de asteptare s-a scurs, se apeleaza ''servo_pozitie_jos()'' pentru a cobori bariera, iar ecranul revine la starea initiala de monitorizare. | ||
| ==== Cod sursa ==== | ==== Cod sursa ==== | ||
| https://github.com/Bogdan594/Smart-Parking-System/tree/main | https://github.com/Bogdan594/Smart-Parking-System/tree/main | ||
| + | |||
| + | ==== Video cu proiectul ==== | ||
| + | https://www.youtube.com/watch?v=XeezoRPa95w | ||