8-bit Music Player

Autor: Chiricu Miruna

Introducere

Scopul proiectului este de a realiza un player muzical retro pe o placa Arduino Uno.

Descriere Generală

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.

Hardware Design

Lista de piese:

  1. Arduino UNO
  2. Breadboard
  3. Jumper wires
  4. Piezo Buzzer
  5. LCD
  6. 5x butoane
  7. Potentiometru pentru volum
  8. (Optional) Potentiometru pentru contrast LCD

Piesele fac parte din acest Starter Kit: https://store.arduino.cc/genuino-starter-kit

Software Design

Medii de dezvoltare:

  • Arduino IDE, VS Code
  • 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 Electrica

Rezultate Obținute

Video pentru prezentare + demo pe YouTube:

https://www.youtube.com/watch?v=Coqtfu8GF64

Download

Cod sursă final: 8-bit_music_player.zip

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

Resurse Software:

Resurse muzicale:

pm/prj2021/avaduva/8-bitmusicplayer.txt · Last modified: 2021/08/27 14:38 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