This shows you the differences between two versions of the page.
pm:prj2023:alexau:led_controller [2023/05/02 16:51] eduard.mihailescu |
pm:prj2023:alexau:led_controller [2023/05/21 20:34] (current) eduard.mihailescu |
||
---|---|---|---|
Line 23: | Line 23: | ||
* 1 Microcontroller Arduino UNO R3 | * 1 Microcontroller Arduino UNO R3 | ||
* 1 Banda LED WS2812B, 5M, 60 led/M, IP20, 5V | * 1 Banda LED WS2812B, 5M, 60 led/M, IP20, 5V | ||
- | * 5 Jumper Wires | + | * 11 Jumper Wires |
- | * 1 Condensator 100μF | + | * 1 Condensator 1000μF |
* 1 Rezistor 330Ohm | * 1 Rezistor 330Ohm | ||
- | * 1 Fotorezistenta | + | * 1 LM393 Sound Detection module |
* 1 Buton | * 1 Buton | ||
+ | * O sursa de curent (220V -> 5V,6A) | ||
=== Diagrama hardware == | === Diagrama hardware == | ||
Line 37: | Line 38: | ||
+ | === Montaj ==== | ||
+ | |||
+ | {{:pm:prj2023:alexau:emihailescu_arduino.png?500|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 42: | Line 46: | ||
<note tip> | <note tip> | ||
- | TODO | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Mediu de dezvoltare Arduino IDE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Biblioteci externe folosite: FastLED + OneButton |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Algoritmi și structuri: Algoritmi pre-implementati de *random*, unde sinusoidale ce pot fi compuse, algoritmi euristici și de decay |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | + | 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 | ||
- | <note tip> | + | 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. |
- | TODO | + | |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | Î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. |
- | ===== Download ===== | + | 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. |
- | TODO | + | {{:pm:prj2023:alexau:cod_eduard_mihailescu.png?500|}} |
- | <note warning> | ||
- | 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**. | + | Restul de cod poate fi vizualizat la următorul link de [[https://github.com/Starnox/pm_project/blob/main/music_visualizer_2/music_visualizer_2.ino|Github]] |
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | <note tip> | ||
+ | Link video YouTube: [[https://youtube.com/shorts/dc9mchq6sdU?feature=share|Rezultat]] | ||
</note> | </note> | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | Consider ca rezultatul final este unul foarte satisfăcător, atingând mai multe milestone-uri decât mi-am propus inițial (6 pattern-uri în plus) și sunt chiar recunoscător ca am avut acest assignment de la facultate deoarce m-a impins sa ies din aria mea de confort intr-o zona în care voiam sa intru dar nu puteam sa încep. Am învățat din greșeli, cum ar fi faptul ca trebuit sa refac doua comenzi deoarece nu am citit bine data sheet-urile, am învățat ca un usb normal poate sa dea în jur de 500mA-900mA, iar LED-urile pe care le-am achizițonat, în funcție de intensitatea la care lucrează poate sa consume și 10A (am cumpărat și atașat o sursa externa de 5V). Per total, sunt foarte mulțumit de aceasta experiență. | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
<note tip> | <note tip> | ||
- | * Alegere proiect 20 aprilie | + | * 20.04.2023 Alegere proiect |
- | * | + | * 30.04.2023 Comanda piese |
+ | * 05.05.2023 Comandat piesa lipsa | ||
+ | * 06.05.2023 Test initial | ||
+ | {{:pm:prj2023:alexau:initial_test_eduard.png?600|}} | ||
+ | |||
+ | * 07.05.2023 Test input intensitate muzica | ||
+ | * 15.05.2023 Adăugare 3 pattern-uri | ||
+ | * 20.05.2023 Adăugare încă 5 pattern-uri | ||
</note> | </note> | ||
Line 79: | Line 95: | ||
<note> | <note> | ||
- | TODO | + | * https://www.youtube.com/watch?v=4Ut4UK7612M |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://github.com/FastLED/FastLED |
+ | * https://github.com/mathertel/OneButton | ||
+ | * https://github.com/NeverPlayLegit/Rainbow-Fader-FastLED/blob/master/rainbow.ino | ||
+ | |||
</note> | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||