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 22:10]
roxana.popa2703
pm:prj2023:danield:musical-xmas-lights [2023/05/28 19:19] (current)
roxana.popa2703
Line 10: Line 10:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{ :​pm:​prj2023:​danield:​diagrama_pm.png?​400x300 ​}}+{{ :​pm:​prj2023:​danield:​diagrama_pm.png?​500x400 ​}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
 +
 +{{ :​pm:​prj2023:​danield:​schema_xmas_lights.png?​800x400 }}
 +
 Piese folosite: Piese folosite:
   * Arduino Uno R3   * Arduino Uno R3
Line 18: Line 21:
   * Breadboard   * Breadboard
   * Potentiometru   * Potentiometru
-  * Difuzor audio 8 ohmi+  * Buzzer
   * Modul card SD   * Modul card SD
   * Fire, butoane etc   * Fire, butoane etc
Line 24: Line 27:
 ===== Software Design ===== ===== Software Design =====
  
-TBD+Codul sursă se găsește aici: {{ :​pm:​prj2023:​danield:​musical_xmas_lights.zip }} 
 + 
 +Detalii de implementare:​ 
 + 
 +Î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. 
 + 
 +Î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 
 +cântec predefinite care pot fi schimbate prin apăsarea butoanelor NEXT, PAUSE, BACK și butonul asignat matricei.  
 +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. 
 + 
 +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(): 
 + 
 +Code snippet din funcția playSong():​ 
 + 
 +  int wholenote = (60000 * 4) / 140; 
 +  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_PIN,​ melody[thisNote],​ noteDuration*0.9);​ 
 +    delay(noteDuration);​ 
 +    noTone(BUZZER_PIN);​ 
 +    lightMatrix(val);​ 
 +  } 
 + 
 +Dacă este apăsat butonul de pauză, se setează un fapt care indică acest lucru și cântecul se oprește. Matricea de LED-uri 
 +se updatează în funcția playSong() pentru a asigura sincronizarea cu cântecul. Dacă cântecul este oprit, pattern-ul de lumini 
 +va continua într-un ritm predefinit. ​
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-TBD+Pentru demo, ne vedem la PM Fair =) .
  
 ===== Concluzii ===== ===== Concluzii =====
  
-TBD+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 să-mi dezvolt abilitățile de organizare și documentare a procesului de proiectare și dezvoltare.
  
 ===== Download ===== ===== Download =====
  
-TBD+Codul sursă se găsește aici: {{ :​pm:​prj2023:​danield:​musical_xmas_lights.zip }}
  
  
 <​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.1683400241.txt.gz · Last modified: 2023/05/06 22:10 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