This shows you the differences between two versions of the page.
pm:prj2024:mdinica:iustina.caramida [2024/05/27 11:01] iustina.caramida [Algoritmi și Structuri Implementate] |
pm:prj2024:mdinica:iustina.caramida [2024/05/27 11:14] (current) iustina.caramida [Software Design] |
||
---|---|---|---|
Line 49: | Line 49: | ||
</note> | </note> | ||
+ | Elementul de noutate al acestui proiect constă în integrarea controlului precis al unui panou solar utilizând senzori LDR pentru a maximiza eficiența energetică. Utilizarea întreruperilor pentru a realiza temporizări precise și gestionarea stării panoului printr-un buton de control reprezintă o abordare inovatoare pentru un sistem de urmărire a soarelui simplu și eficient. | ||
+ | |||
+ | În cadrul proiectului au fost utilizate următoarele funcționalități: | ||
+ | |||
+ | * **GPIO (General Purpose Input/Output)**: Utilizat pentru a controla pinul LED-ului și a citi starea butonului, esențial pentru interacțiunea hardware-software. | ||
+ | * **UART (Universal Asynchronous Receiver-Transmitter)**: Utilizat pentru comunicarea serială, permite monitorizarea și debug-ul sistemului prin afișarea mesajelor în Serial Monitor. | ||
+ | * **Interrupții**: Folosite pentru a implementa o temporizare precisă folosind Timer2, necesară pentru funcțiile de întârziere fără a bloca execuția. | ||
+ | * **Timere**: Timer2 a fost utilizat pentru a genera întreruperi la intervale precise de timp, esențiale pentru temporizările exacte în funcția delay_ms(). | ||
+ | * **ADC (Analog-to-Digital Converter)**: Folosit pentru a citi valorile analogice de la senzorii LDR și a le converti în valori digitale utilizabile în algoritmul de control al panoului. | ||
+ | |||
+ | Calibrarea senzorilor LDR a fost realizată prin determinarea valorilor minime și maxime de lumină detectate în diferite condiții de iluminare. Pragul de eroare (error) și valoarea epsilon (eps) au fost ajustate empiric pentru a asigura că panoul se poziționează corect în funcție de diferențele detectate între cei doi senzori. | ||
+ | |||
+ | Optimizările au fost realizate în următoarele moduri: | ||
+ | * **Utilizarea întreruperilor și a Timer2**: Acest lucru a permis implementarea unei funcții de întârziere precise (delay_ms()) fără a bloca execuția altor părți ale codului, optimizând astfel eficiența și responsivitatea sistemului. | ||
===== Mediul de Dezvoltare ===== | ===== Mediul de Dezvoltare ===== | ||
Codul Arduino este dezvoltat utilizând mediul Arduino IDE (Integrated Development Environment), un mediu software folosit pentru a scrie, compila și încărca codul pe plăcile de dezvoltare Arduino. Arduino IDE oferă o interfață simplă și intuitivă, suportând limbajul de programare C/C++ cu adăugiri specifice platformei Arduino. IDE-ul include un editor de cod, un monitor serial pentru debugging și multe alte instrumente utile pentru dezvoltarea de proiecte embedded. | Codul Arduino este dezvoltat utilizând mediul Arduino IDE (Integrated Development Environment), un mediu software folosit pentru a scrie, compila și încărca codul pe plăcile de dezvoltare Arduino. Arduino IDE oferă o interfață simplă și intuitivă, suportând limbajul de programare C/C++ cu adăugiri specifice platformei Arduino. IDE-ul include un editor de cod, un monitor serial pentru debugging și multe alte instrumente utile pentru dezvoltarea de proiecte embedded. | ||
Line 112: | Line 126: | ||
- | ===== 4. Algoritmi și Structuri Implementate ===== | + | ===== Algoritmi și Structuri Implementate ===== |
Codul utilizează mai mulți algoritmi și structuri pentru a controla mișcarea unui panou solar: | Codul utilizează mai mulți algoritmi și structuri pentru a controla mișcarea unui panou solar: | ||