Record & Play Piano

Introducere

Proiectul presupune construirea unui pian cu butoane care are functia de inregistare si apoi redare pe repeat a continutului inregistrat.

Descriere generală

Butoanele de apasare vor fi conectate la Arduino prin pinul analog A0. Vom folosi functia tone() a Arduino-ului pentru a genera semnale de frecvente diferite, producand diverse sunete prin intermediul buzzerului. În loc sa utilizam pini individuali pentru fiecare buton, vom folosi o tehnică de divizare a tensiunii folosind valori diverse ale rezistentelor, reducand astfel necesitatea de a folosi mai multi pini. Acest lucru ne permite sa includem componente suplimentare, precum afișajul LCD unde vom putea vizualiza actiunile pe care le facem. În timpul modului de inregistrare, utilizatorii pot reda melodiile dorite in timp ce Arduino-ul inregistrează secventa și durata apasarilor butoanelor. Acest lucru este realizat prin monitorizarea tensiunilor analogice de pe pinul A0 și determinarea butonului apasat. Secventa si durata inregistrata sunt stocate în tablouri. La comutarea în modul de redare, Arduino-ul reda secvența inregistrata de tonuri pe baza datelor stocate.

Hardware Design

Lista de componente utilizate:

  • Arduino Uno
  • LCD 1602 cu interfata I2C
  • Breadboard
  • Fire de conexiune
  • Resistoare
  • Buzzer
  • Switch
  • 8 Butoane

Schema electrica:

Software Design

Mediu de Dezvoltare: Arduino IDE

Librarii si Surse 3rd-Party: Codul utilizeaza biblioteca LiquidCrystal_I2C.h pentru a facilita interactiunea cu afisajele LCD I2C. Aceasta permite controlul ecranului LCD pentru a afisa mesaje text.

Algoritmi si Structuri Implementate Aplicatia implementeaza un sistem de inregistrare si redare a notelor muzicale. Jucatorul poate apasa butoane care corespund unor note muzicale, iar sistemul inregistreaza secventa acestora si o reda ulterior.

Initializarea LCD-ului: Functia setup() initializeaza afisajul LCD si afiseaza un mesaj introductiv.

Detectarea apasarii butoanelor: Functia Detect_button() citeste valoarea analogica de la un pin si determina ce buton a fost apasat. Valorile detectate sunt stocate intr-un array pentru a fi redate ulterior.

Redarea sunetelor: Functia Play_tone() gestioneaza redarea sunetelor corespunzatoare fiecarui buton apasat. De asemenea, aceasta afiseaza nota curenta pe ecranul LCD si inregistreaza durata fiecarei note.

Surse si Functii Implementate: setup() Configureaza initial pinurile, afisajul LCD si afiseaza un mesaj de bun venit.

loop() Bucleaza continuu pentru a detecta apasarile de buton si a reda notele inregistrate. Comuta intre modurile de inregistrare si redare pe baza starii unui buton.

Detect_button() Detecteaza ce buton a fost apasat pe baza valorii analogice citite de la un pin si stocheaza aceste informatii in array-uri pentru redare ulterioara.

Play_tone() Reda sunetul corespunzator butonului apasat si afiseaza nota pe LCD. Inregistreaza durata fiecarei note.

Rezultate Obţinute si Concluzii

Am creat un pian capabl sa inregistreze si sa redea sunetele inregistrare. Proiectul include un ecran LCD pentru afișarea notelor și mesajelor, precum și un buzzer pentru redarea sunetelor. Interfața intuitivă permite utilizatorilor să înregistreze și să redea cu ușurință melodii.

Download

Jurnal

03.04.2024 - alegerea temei

02.05.2024 - crearea paginii ocw

03.05.2024 - documentație inițială

14.05.2024 - finalizare hardware

19.05.2024 - finalizare software

Bibliografie/Resurse

pm/prj2024/rpascale/andrei.nedelcu1503.txt · Last modified: 2024/05/27 17:40 by andrei.nedelcu1503
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