This shows you the differences between two versions of the page.
pm:prj2021:avaduva:8-bitmusicplayer [2021/06/04 04:55] miruna.chiricu [Software Design] |
pm:prj2021:avaduva:8-bitmusicplayer [2021/08/27 14:38] (current) miruna.chiricu [Software Design] |
||
---|---|---|---|
Line 17: | Line 17: | ||
- Piezo Buzzer | - Piezo Buzzer | ||
- LCD | - LCD | ||
+ | - 5x butoane | ||
- Potentiometru pentru volum | - Potentiometru pentru volum | ||
- (Optional) Potentiometru pentru contrast LCD | - (Optional) Potentiometru pentru contrast LCD | ||
Line 23: | Line 24: | ||
Piesele fac parte din acest Starter Kit: https://store.arduino.cc/genuino-starter-kit | Piesele fac parte din acest Starter Kit: https://store.arduino.cc/genuino-starter-kit | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Medi de dezvoltare: | + | Medii de dezvoltare: |
* Arduino IDE, VS Code | * Arduino IDE, VS Code | ||
* Tinkercad - Schema electrica | * Tinkercad - Schema electrica | ||
Line 30: | Line 31: | ||
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ă. | 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ă. | ||
- | |||
- | |||
- | Codul final: | ||
===== Schema Bloc ===== | ===== Schema Bloc ===== | ||
Line 41: | Line 39: | ||
{{ :pm:prj2021:avaduva:8-bit_player_schema_electrica.png?770 |}} | {{ :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 |