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

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

Link video YouTube: Rezultat

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

  • Alegere proiect 20 aprilie

Bibliografie/Resurse

TODO Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/alexau/led_controller.1684660534.txt.gz · Last modified: 2023/05/21 12:15 by eduard.mihailescu
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