This is an old revision of the document!
Led Controller
Introducere
Acest proiect, poreclit de mine “Visual-Audio Spectre”, se axează pe controlarea unei benzi de LED-uri prin intermediul unui microcontroller Arduino,
pentru a lumina în diferite moduri (selectate prin intermediul unui buton) bazate pe semnalele sonore (muzica) primite de la un laptop.
Scopul acestui proiect este de a crea un setup de lucru și gaming captivant, care să ofere un mediu estetic plăcut pentru ochi și să îmbunătățească experiența utilizatorului.
Ideea de bază a proiectului a pornit din dorința de a combina pasiunea pentru tehnologie și design într-un singur produs inovator.
Cred ca proiectul este util atât pentru mine, cât și pentru alții, deoarece îmbină funcționalitatea și estetica,
oferind un element de atracție vizuală și dinamică în orice spațiu în care este implementat.
Descriere generală
Schema Bloc
Hardware Design
Lista piese
1 Microcontroller Arduino UNO R3
1 Banda LED WS2812B, 5M, 60 led/M, IP20, 5V
11 Jumper Wires
1 Condensator 1000μF
1 Rezistor 330Ohm
1 LM393 Sound Detection module
1 Buton
O sursa de curent (220V → 5V,6A)
Diagrama hardware
Diagrama electrica
Montaj
Software Design
Descrierea codului aplicaţiei (firmware):
Mediu de dezvoltare Arduino IDE
Biblioteci externe folosite: FastLED + OneButton
Algoritmi și structuri: Algoritmi pre-implementati de *random*, unde sinusoidale ce pot fi compuse, algoritmi euristici și de decay
Codul a fost scris utilizând informații din trei laboratoare, mai exact
Laboratorul 2: Întreruperi hardware → cod ce se rulează în momentul în care timer-ul ajunge la valoare dorita
Laboratorul 3: Timere → cod pentru crearea unui timer ce ruleaza cu o frecventa de 0.5Hz
Laboratorul 4: ADC → setarea unui pin ce primește informații în format analog de la un senzor de sunet
Logica de baza este destul de simpla. În funcția de setup, fac set-up la banda led folosind funcțiile de setup din biblioteca 'FastLED', configurez pinul A1 pentru a activa ADC-ul, setez timer-ul sa declanșeze o întrerupe odată la 2 secunde și leg butonul care este controlat de pinul 3 de funcția care schimba pattern-ul curent.
În functia principala de loop, citesc de fiecare data informația care îmi este data de senzor, o translatez în spațiul de valori care mă intereseaza [0-NUM_LEDS-1], după care, cu ajutorul unui switch verific pe ce pattern de luminare sunt în momentul actual și apelez funcția corespunzătoare pattern-ului.
Fiecare pattern este diferit în felul sau. Primele 5 pattern-uri sunt “standalone”, nu se folosesc de valoare citită de pe senzor, și doar luminează pe baza unor funcții matematice ce conferă un aspect interesant și frumos (pe baza de testing). Ultimele 3 pattern-uri folosesc atât intensitatea sunetului citită de senzor pentru a lumina un număr de led-uri proporțional cu aceasta, cât și de întrerupere și timer pentru a schimba în timp culoarea.
Rezultate Obţinute
Concluzii
Download
TODO
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Test input intensitate muzica 7 mai
Adăugare 3 pattern-uri 8 mai
Adăugare încă 5 pattern-uri 9mai
Bibliografie/Resurse
TODO
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF