Mircea Popa 333CD
Prezentarea proiectului:
Schema bloc a proiectului:
Schema hardware:
Listă de piese:
Proiectul se împarte în două module software:
Codul utilizează biblioteca FastLED pentru controlul semnalului.
Inițializare: Se configurează LED-urile și începe comunicarea serială (default pe portul 9600) Citire și interpretare intrări seriale: Citește date de la portul serial, interpretează comanda primită și actualizează modul de animație și parametrii LED-urilor (culori și întârzieri). Control LED-uri: În funcție de modul selectat (RAINBOW, PULSE, SOLID, IMMERSIVE), actualizează LED-urile corespunzător:
Codul folosește delay-uri pentru a temporiza actualizarea LED-urilor conform parametrilor primiți.
Serial.begin(9600)
în setup()
și Serial.readStringUntil('\n')
în loop()
Interfață grafică Python (biblioteca Tkinter)
Funcția get_dominant_screen_color
preia o captură de ecran, calculează culoarea dominantă și o ajustează pentru a avea saturație și valoare maxime.
Trimiterea comenzilor către Arduino: Funcțiile send_rgb
, send_immersive
, send_rainbow
, și send_pulse
trimit diferite comenzi către Arduino pentru a schimba modul de iluminare și parametrii acestuia (culoare și viteză).
periodic_update
verifică periodic dacă modul IMMERSIVE este activ și actualizează automat culoarea bazată pe culoarea dominantă a ecranului.
Formatul de date trimis de aplicația GUI către Arduino prin portul serial urmează o structură specifică, care constă dintr-o serie de valori separate prin virgule. Această structură permite Arduino-ului să interpreteze corect comanda și să ajusteze modul de iluminare și parametrii corespunzători.
Formatul general al datelor trimise este:
<mode>,<speed>,<red>,<green>,<blue>
Interfața grafică
Culoarea selectată se actualizează dinamic când slider-urile RGB sunt modificate (valori de la 0 la 255).
Apăsarea unuia dintre cele 4 butoane determină schimbarea modului de iluminare și trimiterea noilor parametri prin serial.