This is an old revision of the document!
Sistemul este compus din 3 mari etaje:
Proiectul îndeplinește condiția de a utiliza minim 3 componente periferice externe (OLED, senzori TEMT6000, servomotoare).
2. Librarii
- <avr/io.h>
- <util/delay.h>
- <avr/pgmspace.h>: Pentru stocarea fontului OLED-ului direct în memoria Flash, economisind astfel memoria RAM limitata
3. Algoritmi şi structuri implementate:
- Algoritmul de Tracking Solar: Logica principală se bazează pe citirea celor 4 senzori (TEMT6000) și calcularea mediilor pe axe: axa verticală (media de sus vs media de jos) și axa orizontală (stânga vs. dreapta). Sistemul compară aceste medii și, dacă diferența depășește o toleranță definită (pentru a preveni oscilațiile), ajustează poziția panoului.
- Controlul Actuatoarelor (PWM): S-a implementat generarea de semnale Fast PWM folosind Timer0. Pozițiile servomotoarelor sunt controlate prin modificarea directă a regiștrilor de comparare OCR0A și OCR0B.
- Implementarea protocolului TWI (Two-Wire Interface) direct pe regiștri pentru a trimite comenzi și date către display-ul OLED SSD1306.
4. Laboratoare folosite:
Laboratorul 0: GPIO Controlul pinilor fizici ai plăcii. L-am folosit pentru a seta pinii ca intrări sau ieșiri
Laboratorul 3: Timere. PWM Am folosit generarea de semnale PWM pentru a controla cele două servomotoare
Laboratorul 4: ADC Am folosit conversia analog-digitală (ADC) pentru a citi semnalele de la cei 4 senzori de lumină
Laboratorul 6: I2C Am folosit protocolul I2C ca să pot comunica cu display-ul folosind doar două fire (SDA și SCL), trimițând datele și valorile senzorilor pentru a fi afișate în timp real