Differences

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

Link to this comparison view

pm:prj2021:avaduva:8-bitmusicplayer [2021/05/20 23:34]
miruna.chiricu [Schema Electrica]
pm:prj2021:avaduva:8-bitmusicplayer [2021/08/27 14:38] (current)
miruna.chiricu [Software Design]
Line 8: Line 8:
 Utilizatorul va avea la dispozitie un playlist de melodii 8-bit style si 5 butoane prin care sa poata da Play/Pause, Next, Back, Shuffle Playlist/​Ordinea originala, Repeat One/​All/​None. Numele melodiei curente si modurile de redare vor aparea pe un ecran LCD. Sunetul va fi redat de catre un piezo buzzer. Utilizatorul va avea la dispozitie un playlist de melodii 8-bit style si 5 butoane prin care sa poata da Play/Pause, Next, Back, Shuffle Playlist/​Ordinea originala, Repeat One/​All/​None. Numele melodiei curente si modurile de redare vor aparea pe un ecran LCD. Sunetul va fi redat de catre un piezo buzzer.
  
 +
 +{{ :​pm:​prj2021:​avaduva:​8-bit_player.png?​770 |}}
 ===== Hardware Design ===== ===== Hardware Design =====
 === Lista de piese: === === Lista de piese: ===
Line 15: Line 17:
   - Piezo Buzzer   - Piezo Buzzer
   - LCD   - LCD
-  - (Optional) ​Potentiometru pentru ​luminozitate LCD +  - 5x butoane 
-  - (Optional) Potentiometru pentru ​animatii pe LCD+  - Potentiometru pentru ​volum 
 +  - (Optional) Potentiometru pentru ​contrast ​LCD
  
-Piesele fac parte din acest Starter Kit: https://www.robofun.ro/arduino-starter-kit.html?​gclid=Cj0KCQjwkZiFBhD9ARIsAGxFX8CaMrFitcnVevKf0jIlUORpVvPf-L00mDC13JK6BNEZHAxxAoSx1AsaAqA3EALw_wcB+ 
 +Piesele fac parte din acest Starter Kit: https://store.arduino.cc/genuino-starter-kit
 ===== Software Design ===== ===== Software Design =====
-Mediu de dezvoltare:  +Medii de dezvoltare:  
-  * Arduino IDE +  * Arduino IDE, VS Code 
-  * Tinkercad+  * Tinkercad ​- Schema electrica 
 + 
 +Proiectul este împărțit în 5 fișiere: codul sursă, biblioteca de perechi nume_notă - frecvență (note_lib.h),​ 3 fișiere în care sunt inițializate "​partiturile"​ pentru fiecare melodie (vector pentru șirul de note + vector pentru șirul de durate ale notelor), și fișierul buttons.h pe baza căruia se vor crea caracterele speciale pentru Play/Pause, Repeat One/All, Shuffle. 
 + 
 +Player-ul este, de fapt, un scheduler de melodii care primește frecvent input de la butoanele menționate și, în funcție de caz, stabilește următoarea melodie care va fi redată.
 ===== Schema Bloc ===== ===== Schema Bloc =====
  
Line 29: Line 37:
 ===== Schema Electrica ===== ===== Schema Electrica =====
  
-{{ :​pm:​prj2021:​avaduva:​8-bit_player_schema_electrica.png?​750 |}}+{{ :​pm:​prj2021:​avaduva:​8-bit_player_schema_electrica.png?​770 |}}
 ===== Rezultate Obținute ===== ===== Rezultate Obținute =====
 +
 +Video pentru prezentare + demo pe YouTube:
 +
 +https://​www.youtube.com/​watch?​v=Coqtfu8GF64
  
 ===== Download ===== ===== Download =====
  
 +Cod sursă final: {{ :​pm:​prj2021:​avaduva:​8-bit_music_player.zip }}
 ===== Jurnal ===== ===== Jurnal =====
  
 +Dificultăți:​
 +  * Modul în care să tratez cele 5 butoane: întreruperi sau verificări suficient de frecvente? Am ales verificările. De fapt, a fost ales pentru mine: 5 butoane > 2 pini pentru întreruperi pentru Arduino UNO. (Cineva acolo sus mă iubește.)
 +  * Lipsa memoriei: după parsarea manuală a unui singur cântec întreg, plăcuța ar fi folosit 116% din memoria disponibilă pentru variabile globale și locale. A fost nevoie să sparg vectorii în bucăți care se repetau: am ajuns la 86% :-?. Melodia cu pricina este redată în demo în întregime (am renunțat temporar la alte părți din cod în scop demonstrativ). Mi-am învățat lecția înainte să le parsez pe celelalte două.
 +  * Bug-uri ciudate LCD: printarea pe LCD a pus niște probleme foarte dubioase. Apăreau caractere aiurea sau cele bune, dar pe poziții aiurea. Totuși, codul era corect. Dupa îndelungate cautări eșuate, am înțeles că cel mai probabil era din cauza lipsei de memorie și a felului cum sunt stocate șirurile de caractere. Cumva se întrepătrundeau titlul și caractere speciale. Soluție: am scurtat titlurile și reordonat scrisul: titlul jos, caracterele speciale sus (pentru că scroll la stânga afecta alte caractere).
 +
 +
 +Pe de parte cea mai costisitoare parte ca timp a fost cea de parsat partituri de mână, notă cu notă, durată cu durată. Totuși, a fost și cea mai relaxantă parte a proiectului.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +
 +=== Resurse Software: ===
 +
 +https://​www.makerguides.com/​character-lcd-arduino-tutorial/​
 +
 +https://​www.hackster.io/​techarea98/​super-mario-theme-song-with-piezo-buzzer-and-arduino-2cc461
 +
 +https://​solarianprogrammer.com/​2017/​01/​31/​arduino-buzzer-player-adjustable-volume-playing-fur-elise-beethoven/​
 +
 +=== Resurse muzicale: ===
 +
 +https://​www.youtube.com/​watch?​v=1pVNm-cG4Tg
 +
 +https://​www.youtube.com/​watch?​v=I0hbFdPR42c
 +
 +https://​www.youtube.com/​watch?​v=1xKfytm0ngo
pm/prj2021/avaduva/8-bitmusicplayer.1621542873.txt.gz · Last modified: 2021/05/20 23:34 by miruna.chiricu
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