Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:fstancu:mircea.popa2709 [2024/05/27 10:50]
mircea.popa2709
pm:prj2024:fstancu:mircea.popa2709 [2024/05/27 11:25] (current)
mircea.popa2709
Line 44: Line 44:
  
 {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​fstancu/​scheme-it-export-new-project-2024-05-17-11-05.png?​400}} {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​fstancu/​scheme-it-export-new-project-2024-05-17-11-05.png?​400}}
-{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​fstancu/​whatsapp_image_2024-05-27_at_10.48.02_1059c582.jpg?400}}+{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​fstancu/​whatsapp_image_2024-05-27_at_10.13.25_01796a10.jpg?400}}
  
 Listă de piese: Listă de piese:
Line 57: Line 57:
  
  
 +===== Software Design =====
 +Proiectul se împarte în **două module software**: ​
 +  * Codul pentru controlul plăcuței Arduino
 +  * Aplicația cu interfață grafică pentru Windows
  
 +<note important>​Link GitHub: https://​github.com/​mircea-popa02/​smart-lights</​note>​
  
 +==== Arduino ====
 +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:​
 +  * **RAINBOW**:​ Afișează un efect curcubeu.
 +  * **PULSE**: Afișează pulsarea culorii specificate alternând luminozitatea
 +  * **SOLID**: Afișează o culoare solidă fără alte animații sau efecete
 +  * **IMMERSIVE**:​ Tranziție lină între culori.
  
-===== Software Design =====+<​note>​ 
 +Modul **IMMERSIVE** se bazează pe un flux constant de date prin portul serial provenit de la computer 
 +</​note>​
  
 +Codul folosește delay-uri pentru a temporiza actualizarea LED-urilor conform parametrilor primiți.
 <note tip> <note tip>
-  ​Mediu de dezvoltareArduino IDE +**Capitolele din laborator** înglobate sunt
-  * **Interfață grafică Python** +  * **GPIO** - Codul folosește pinul digital 6 pentru a controla LED-urile prin biblioteca FastLED 
-  * Algoritmi ​și structuri: Calculul culorilor ​în funcție de informațiile primite de la GUI.+  * **UART** - Comunicarea serială este realizată cu ''​Serial.begin(9600)''​ în ''​setup()''​ și ''​Serial.readStringUntil('​\n'​)''​ în ''​loop()''​ 
 +  ​* **Timere** - Funcția delay(animationDelay) folosește timerul intern al microcontrolerului pentru a introduce întârzieri între actualizările LED-urilor. 
 +  * **PWM** - Deși nu este folosit explicit PWM în codul prezentat pentru controlul direct al intensității LED-urilor, conceptul ​de ajustare a luminozității LED-urilor prin modificarea valorilor RGB sau a intensității (ex. brightness în modul PULSE) este similar cu controlul prin PWM.
 </​note>​ </​note>​
 +
 +==== GUI ====
 +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ă).
 +
 +<​note>​
 +Funcția ''​periodic_update''​ verifică periodic dacă modul **IMMERSIVE** este activ și actualizează automat culoarea bazată pe culoarea dominantă a ecranului.
 +</​note>​
 +
 +**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ă
  
 {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​fstancu/​333995159-07addfa4-28dc-4bac-a9dc-6b6ac8684be3.png?​400}} {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​fstancu/​333995159-07addfa4-28dc-4bac-a9dc-6b6ac8684be3.png?​400}}
 +
 +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.
 +
  
  
pm/prj2024/fstancu/mircea.popa2709.1716796258.txt.gz · Last modified: 2024/05/27 10:50 by mircea.popa2709
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0