Differences

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

Link to this comparison view

pm:prj2023:danield:musical-xmas-lights [2023/05/06 21:54]
roxana.popa2703 created
pm:prj2023:danield:musical-xmas-lights [2023/05/28 19:19] (current)
roxana.popa2703
Line 4: Line 4:
 Proiectul are ca scop realizarea unui ansamblu luminos insotit de acompaniament muzical care poate fi folosit ca decoratie de Crăciun. Deoarece are și un sistem audio încorporat,​ nu mai este nevoie de dispozitive separate pentru o atmosferă festivă. Ideea acestui proiect a pornit de la situațiile în care la o petrecere există aranjament de lumini adecvat, dar nu există echipament audio și invers. Proiectul are ca scop realizarea unui ansamblu luminos insotit de acompaniament muzical care poate fi folosit ca decoratie de Crăciun. Deoarece are și un sistem audio încorporat,​ nu mai este nevoie de dispozitive separate pentru o atmosferă festivă. Ideea acestui proiect a pornit de la situațiile în care la o petrecere există aranjament de lumini adecvat, dar nu există echipament audio și invers.
  
-Proiectul are la bază o matrice de LED-uri controlată prin Arduino care luminează într-un pattern prestabilit. User-ul poate schimba pattern-ul de aprindere printr-un buton și luminozitatea LED-urilor cu ajutorul unui potențiometru. Atașat la acest ansamblu se găsește și un difuzor audio care redă o melodie citită dintr-un card SD. Melodia este una prestabilită,​ care se poate schimba printr-un buton.+Proiectul are la bază o matrice de LED-uri controlată prin Arduino care luminează într-un pattern prestabilit. ​ 
 +User-ul poate schimba pattern-ul de aprindere printr-un buton și luminozitatea LED-urilor cu ajutorul unui potențiometru. ​ 
 +Atașat la acest ansamblu se găsește și un difuzor audio care redă o melodie citită dintr-un card SD.  
 +Melodia este una prestabilită,​ care se poate schimba printr-un buton.
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{:​pm:​prj2023:​danield:​diagrama_pm.png?​400x400}}+{{ :​pm:​prj2023:​danield:​diagrama_pm.png?​500x400 ​}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +{{ :​pm:​prj2023:​danield:​schema_xmas_lights.png?​800x400 }} 
-Aici puneţi tot ce ţine de hardware design+ 
-  * listă de piese +Piese folosite
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +  * Arduino Uno R3 
-  * diagrame de semnal ​ +  * WS2812B 8x8 LED Matrix 
-  * rezultatele simulării +  * Breadboard 
-</​note>​+  * Potentiometru 
 +  * Buzzer 
 +  * Modul card SD 
 +  * Fire, butoane etc
  
 ===== Software Design ===== ===== Software Design =====
  
 +Codul sursă se găsește aici: {{ :​pm:​prj2023:​danield:​musical_xmas_lights.zip }}
  
-<note tip> +Detalii ​de implementare:​
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+În funcția setup() se seteaza pinii, se configurează întreruperile și se inițializează parametrii matricei de LED-uri. 
 +Tot aici se inițializează cardul SD și se citesc cele 3 cântece care vor fi redate de buzzer.
  
-<note tip> +În funcția loop() se controlează matricea de LED-uri și buzzer-ul. Inițial se pornește cu un pattern de lumini și un 
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru+cântec predefinite care pot fi schimbate prin apăsarea butoanelor NEXT, PAUSE, BACK și butonul asignat matricei.  
-</​note>​+Apăsarea butoanelor modifică variabilele __song_num__ și __matrix_opt__ care rețin numărul melodiei și al pattern-ului 
 +de lumini. Apăsarea butoanelor declanșează întreruperi de tip PIN Change, ​în interiorul cărora se actualizează variabilele
 +Tot aici se citește input-ul dat de potențiometru pentru a determina intensitatea luminii LED-urilor.
  
-===== Concluzii =====+Pattern-urile de lumini folosite sunt definite în fișierele header incluse și sunt definite în librăria FastLED. Cântecele 
 +pentru buzzer sunt definite sub forma unor vectori de perechi (notă, durată) care sunt citiți la începutul execuției. Pentru 
 +a reda cântecele, am definit funcția playSong() care citește nota și durata sa și stabilește parametrii necesari pentru 
 +metoda tone():
  
-===== Download =====+Code snippet din funcția playSong():
  
-<note warning+  int wholenote = (60000 * 4) / 140; 
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier READMEun ChangeLogun script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+  int divider = 0, noteDuration = 0; 
 +  for (int thisNote = 0; thisNote ​size * 2 && !pause; thisNote = thisNote + 2) { 
 +    lightMatrix(val);​ 
 +    divider = melody[thisNote + 1]; 
 +    if (divider ​0) { 
 +      ​noteDuration = (wholenote/ divider; 
 +    } else if (divider < 0) { 
 +      noteDuration = (wholenote) / abs(divider);​ 
 +      noteDuration *= 1.5;  
 +    } 
 +    tone(BUZZER_PINmelody[thisNote]noteDuration*0.9); 
 +    delay(noteDuration)
 +    noTone(BUZZER_PIN);​ 
 +    lightMatrix(val);​ 
 +  }
  
-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 Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +Dacă este apăsat butonul de pauză, ​se setează un fapt care indică acest lucru și cântecul se opreșteMatricea de LED-uri 
-</​note>​+se updatează în funcția playSong() pentru a asigura sincronizarea cu cânteculDacă cântecul este opritpattern-ul de lumini 
 +va continua într-un ritm predefinit. ​
  
-===== Jurnal ​=====+===== Rezultate Obţinute ​=====
  
-<note tip> +Pentru demo, ne vedem la PM Fair =) . 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului+ 
-</​note>​+===== Concluzii ===== 
 + 
 +Acest proiect a fost primul proiect hardware pe care l-am realizat ​și m-a ajutat foarte mult să-mi dezvolt abilitățile de lucru 
 +cu hardware. Totodată, m-a ajutat ​-mi dezvolt abilitățile de organizare și documentare a procesului de proiectare și dezvoltare
 + 
 +===== Download =====
  
-===== Bibliografie/​Resurse =====+Codul sursă se găsește aici: {{ :​pm:​prj2023:​danield:​musical_xmas_lights.zip }}
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​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>​
pm/prj2023/danield/musical-xmas-lights.1683399288.txt.gz · Last modified: 2023/05/06 21:54 by roxana.popa2703
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