Mini piano with recording and playback

Juravlea Teodor-George

335CC

Introducere

Proiectul consta in proiectarea unui mini pian ce va reda note la apasarea butoanelor. Aceste note pot fi inregistrate, iar inregistrarile vor fi stocate pe un card microSD, putand fi redate pe pian.

Descriere generală

Mini pianul functioneaza prin redarea sunetulor corespunzatoare notelor muzicale la apasarea butoanelor (unul pentru fiecare nota). Acesta dispune si de un buton de inregistrare, care va stoca informatia pentru cate o nota muzicala pe o durata prestabilita. Inregistratile se salveaza pe un card microSD, intr-un fisier text, care poate fi, inclusiv, citit, redenumit si editat manual de pe alte dispozitive. Ecranul LCD va afisa inregistrarile disponibile, si se poate selecta, cu ajutorul butoanelor de navigare, o inregistrare pentru a fi redata.

Schema bloc:

Hardware Design

Lista de piese:

  • placa Arduino UNO
  • butoane
  • buzzer pasiv
  • modul slot card microSD
  • display LCD
  • breadboard
  • fire
  • rezistente

Schema hardware:

Software Design

Mediu de dezvoltare folosit: Arduino IDE 2.1.0

Biblioteci 3rd-party:

Implementarea se bazeaza pe folosirea functiilor tone() si noTone() pentru inceperea si oprirea redarii notelor muzicale. Sunt folosite mai multe variabile de flag pentru tinerea evidentei starii curente (stare de pian - inregistrare/nu inregistrare, stare de redare inregistrare).

Cand este activat modul inregistrare, pentru fiecare nota muzicala redata se va retine frecventa, durata notei (milisecunde) si timpul de pauza pana la urmatoare nota (milisecunde), acestea fiind scrise in perechi pe cate o linie, separate printr-un spatiu, intr-un fisier.

Modul de redare a inregistrarilor este activat/dezactivat cu un buton si citeste fisierul selectat linie cu linie, redand notele muzicale cu durata si timpul de pauza inregistrate.

Se pot selecta fisiere folosind butonul de next song. Acesta cicleaza prin toate fisierele disponibile pe cardul SD. Numele fisierului selectat este afisat pe ecranul LCD. Daca nu exista niciun fisier pe cardul SD, se afiseaza “No files.”.

Atunci cand se termina de redat o inregistrare, se afiseaza pe a doua linie a ecranului textul “finished”.

Fisierele sunt editabile pe alte sisteme, deci exista posibilitatea redarii melodiilor din surse externe, atata timp cat sunt reprezentate in formatul corect.

Pentru interfatarea cu cardul microSD este folosita biblioteca standard din Arduino SD.h, iar pentru ecranul LCD este folosita biblioteca 3rd-party LiquidCrystal_I2C.h.

Concluzii

Am reusit sa implementez proiectul exact cum mi-am propus, cu toate functionalitatile planificate la inceput.

Exista totusi un bug caruia nu i-am descoperit cauza: atunci cand se reda o inregistrare, intre penultima si ultima nota exista un timp de pauza mai mare decat ar trebui. In fisier pare ca timpul de pauza este corect, asa ca bug-ul apare din implementarea redarii undeva.

Download

Bibliografie/Resurse

pm/prj2023/ncaroi/mini-piano.txt · Last modified: 2023/06/02 20:34 by teodor.juravlea
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