Email: simona.leu@stud.acs.upb.ro
Am pornit de la diferitele luminițe ambientale și instalații de Crăciun, aducând în plus ideea de redare a muzicii și a jocurilor de lumini într-un obiect compact, care ocupă puțin spațiu.
Cubul de led-uri se va lumina în funcție de muzica redată de pe un card SD. Utilizatorul va putea schimba și pune pe pauză melodiile cu ajutorul unor butoane și va putea vizualiza melodia redata pe ecranul LCD.
Principalul scop al proiectului este acela de a ajuta la crearea unui cadru plăcut pe timpul diferitelor activități (job, gaming, studiat, citit, etc.)
Din ce în ce mai multe persoane care petrec un timp considerabil în fața calculatorului preferă să își creeze un cadru plăcut, relaxant, iar un astfel de cub ar fi o soluție perfectă pentru acest lucru.
Utilizatorul va putea schimba melodiile și va putea pune pe pauză melodia curentă cu ajutorul unor butoane (înainte, înapoi, pauză/play). Melodia redată va fi afișată pe un ecran LCD.
La început, se va afișa pe ecran un mesaj care va solicita utilizatorului apăsarea unui buton (play) pentru a porni atât cubul cât și muzica. După acest pas, se va incepe redarea muzicii și iluminarea cubului in funcție de intensitatea acesteia.
| Denumire | Număr | Link |
|---|---|---|
| Arduino | 1 | link plăcuță |
| led-uri | 27 | link set led-uri |
| fire | to do | link fire |
| butoane | 3 | link butoane |
| breadboard | 1 | link breadboard |
| kit lipit | 1 | link kit lipit |
| speaker | 1 | https://www.emag.ro/difuzor-0-5w-8-ohmi-5x28-mm-503211/pd/D39N8ZMBM/?ref=history-shopping_362316089_7083_1 |
| display LCD | 1 | link display |
| sârmă sudat led-uri | ~1-1.5m | gasita acasa |
| cablu USB | 1 | link cablu USB |
| cititor SD | 1 | link cititor SD |
| amplificator LM386 | 1 | https://www.optimusdigital.ro/ro/electronica-de-putere-amplificatoare-audio/45-amplificator-audio-lm386.html?search_query=0104110000007353&results=1 |
| potențiometru | 1 | link potentiometru |
Pin 1 - conectat la pinul 4 (RS) de pe display-ul LCD
Pin 2- conectat la pinul 6 (E) de pe display-ul LCD
Pin 4 - conectat la pinul 11 (D4) de pe display-ul LCD
Pin 5 - conectat la pinul 12 (D5) de pe display-ul LCD
Pin 6 - conectat la pinul 13 (D6) de pe display-ul LCD
Pin 7 - conectat la pinul 14 (D7) de pe display-ul LCD
Pinii 1 (VSS), 5(RW) si 16 (K) de pe display-ul LCD sunt conectati la GND.
Pinii 2 (VDD) si 15 (A) de pe display-ul LCD sunt conectati la 5V.
Pinul 3 (V0) al display-ului este conectat la un potentiometru.
Pin 24 - conectat la buton albastru
Pin 26 - conectat la buton galben
Pin 28 - conectat la buton verde
Pin 50 - conectat la pinul MISO al modulului SD reader
Pin 51 - conectat la pinul MOSI al modulului SD reader
Pin 52 - conectat la pinul SCK al modulului SD reader
Pin 53 - conectat la pinul CS al modulului SD reader
Ceilalti pini acestui modul SD reader sunt conectati corespunzator la 5V si GND.
Pin A0 - conectat la pinul de input (IN) al modulului LM386.
Ceilalti pini ai modulului LM386 sunt conectati corespunzator la 5V si GND. La acest modul este conectat speaker-ul (in cele doua borne verzi de pe modul).
Liniile si coloanele cubului de LED-uri sunt conectate astfel la pinii placutei Arduino:
L0 = 23; L1 = 25; L2 = 27;
C0 = 29; C1 = 31; C2 = 33; C3 = 35; C4 = 37; C5 = 39; C6 = 41; C7 = 43; C8 = 45;
Pentru realizarea proiectului voi folosi Arduino IDE.
In cadrul implementarii proiectului am avut nevoie de urmatoarele biblioteci Arduino:
* SD.h - pentru folosirea cardului SD (cu modulul SD reader)
* TMRpcm.h - pentru redarea fisierelor audio de pe cardul SD
* LiquidCrystal.h - pentru folosirea LCD-ului
Pentru lucrul cu butoane am folosit Button.h, implementare preluata dintr-una dintre paginile de proiecte (link: https://ocw.cs.pub.ro/courses/pm/prj2021/dbrigalda/jocuri-de-memorie).
Din cauza unor probleme de dimensiune a fisierelor audio, am recurs la impartirea in bucati mai mici a fisierului audio. Un fisier de dimensiune mai mare nu putea fi prelucrat. Astfel ca, pentru o melodie corespund mai multe fisiere de forma a<contor>.wav, pentru urmatoarea corespund fisierele b<contor>.wav, etc. Pentru o afisare placuta pe LCD, am stocat denumirile melodiilor redate (in ordine) intr-un fisier. Astfel, pentru melodia compusa cu litera a se va afisa prima intrare/denumire in fisier, pentru cea cu b se va afisa a doua denumire din fisier, etc.
Trecerea de la o bucata de melodie la alta este insesizabila pentru utilizator (are continuitate) si se realizeaza prin actualizarea contorului in numele fisierului (ex: a1.wav → a2.wav). Trecerea de la o melodie la alta se face, de asemenea, in mod placut, astfel ca se va “incrementa” litera din numele fisierului, iar contorul va fi resetat la 1 (ex: a9.wav → b1.wav) Pentru fiecare trecere de la o bucata la alta se verifica faptul ca exista fisierul cu numele respectiv compus. Daca exista se va reda; daca nu exista inseamna ca melodia a ajuns la final, si se va trece la urmatoarea melodie (urmatoarea litera si contor 1). Daca nu exista un fisier cu acest nume inseamna ca s-au redat toate melodiile incarcate pe cardul SD si se va relua redarea incepand cu a1.wav. Pe display-ul LCD se face afisarea melodiei curent redate, afisarea se face pe randul 2 al LCD-ului (pe randul 1 se afiseaza starea: playing sau paused). Afisarea denumirii se face de la dreapta la stanga, prin mutarea textului cu cate o casuta la un interval de scroll setat.
Pentru o experienta mai placuta am realizat implementarea a 3 butoane utile in folosirea acestui proiect/produs:
1. BACK - acest buton da replay la melodia curenta (se incepe din nou). Acest lucru se realizeaza prin setarea contorului cu care se compune numele la 1, pastrandu-se litera. Se va intra direct in starea playing, chiar daca inainte de apasare proiectul se afla pe pauza (va fi resetat jocul de lumini astfel)
2. PAUSE - acest buton pune pe pauza melodia si jocul de lumini (LED-urile se vor opri exact asa cum erau cand s-a apasat).
3. NEXT - acest buton face trecerea la urmatoarea melodie (daca nu exista o urmatoare melodie, inseamna ca s-au redat toate melodiile incarcate pe cardul SD si se reia redarea de la prima - a1.wav). Trecerea de la bucata curenta de melodie la bucata de inceput a urmatoarei melodii se realizeaza cum am descris mai sus (contorul se reinitializeaza la 1 si se incrementeaza litera din nume). Se actualizeaza si denumirea melodiei afisate pe LCD.
Cubul de LED-uri se lumineaza intr-un mod random, creand astfel jocuri de lumini unice la fiecare redare. Am tinut cont ca acesta sa nu se lumineze chiar de la inceput (nu pana nu incepe melodia). De asemenea, acesta va prelua pauza melodiei (se va opri exact in configuratia din momentul in care s-a apasat butonul pentru pauza). La apasarea butoanelor BACK si PAUSE, chiar daca inaintea apasarii proiectul se afla in pauza, se va trece in playing, iar jocul de lumini al cubului se va reseta (va trece din pause in playing, cu alte valori random pentru jocul de lumini).
2. Fisierele de dimensiune prea mare nu vor putea fi redate (solutie: impartire in mai multe fisiere de dimensiune mai mica).
3. Denumirile prea lungi pentru fisiere nu pot fi gestionate (solutie: deminiri mai scurte).
4. Pentru a putea fi folosit modulul SD intr-un circuit complex (cu mai multe componente) este necesara folosirea pinilor atat de 3.3V, cat si 5V (pentru a putea fi alimentat corespunzator)
- How To Make A DIY Arduino LED Cube
- Music Reactive Led Cube || Must Watch
- "Hello World!" - Folosire display
- Playing music in Arduino using SD Card Module
- Serial to Parallel Shifting-Out with a 74HC595
- Multiple Push Buttons on One Arduino Input
- https://forum.arduino.cc/t/sd-card-connection-with-arduino-mega-2560/178436