Pian Electric Inteligent
Student: Popa Athanasia
Grupa: 333CC
Introducere
Proiectul ales de mine este un pian electric inteligent. Acesta pune la dispozitie utilizatorului functionalitati multiple si are patru moduri de functionare:
canta: utilizatorul poate canta la pian, precum la oricare alt pian obisnuit prin apasarea clapetelor
inregistrare: utilizatorul poate inregistra melodia cantata intr-o sesiune
redare: utilizatorul poate reda melodiile inregistrate in sesiunile anterioare
joc: utilizatorul se poate juca Piano Tiles (jucatorul trebuie sa apese clapetele corespunzatoare notelor muzicale afisate pe ecran).
Pianul electric inteligent creat de mine cumuleaza facilitati multiple, facand mai usoara munca oricarui pasionat de muzica.
Descriere generală
Hardware Design
Schema electrica
Software Design
Mediul de dezvoltare folosit a fost Arduiono IDE, iar bibilotecile utilizate sunt:
<LiquidCrystal.h> pentru utilizarea modulului LCD I2C
<Tone.h> pentru redarea sunetelor
<SD.h> si <SPI.h> pentru folosirea modulului de scriere/citire a cardului SD
Implementare:
global se initializeaza si declarat un array cu valorile frecventelor specifice notelor muzicale, un array cu denumirea acestora si pini utilizati;
modul in care se afla pianul (canta, inregistrare, redare, joc) este reprezentat de variabila state care care corespunde unea dintre aceste stari
setup():se declar modul fiecarui pin, se initializeaza lcd-ul si se seteaza seed-ul pentru generatorul de numere random folosit la partea de joc
changeState():se citeste valoarea receptate de la potentiometru si se mapeaza aceasta valoare cu modul in care se afla pianul, prin incadrarea valorii citite in intr-un interval specific modului respectiv
pressedButton():determina ce clapa/buton a fost apelat si intoarce indexul acestuia sau -1 in cazul in care niciun buton nu a fost apasat prin selectarea secventiala a canalelor multiplexorului si determinarea starii de HIGH/LOW a acestora
loop(): se verifica in ce mod este pianul(cu ajutorul functiei state) si se executa codul specific starii respective
starea 0(canta): se determine butonul/clapa apasata (cu ajutorul functiei pressedButton()), se reda nota corespunzataoare clapei respective si se afiseaza pe ecranul lcd denumirea notei muzicale
starea 1(inregistrare): se determine butonul/clapa apasata (cu ajutorul functiei pressedButton()), se reda nota corespunzatoare clapei respective, se deschide fisierul corespunzator inregistarii de pe cardul SD si se scrie indexul ntei tocmai apasta in acesta; in cazul in care nu a fost introdus cardul sd se va afisa un mesaj specific
state 2(redare): se citesc din fisierul corespunzator inregistarii, de pe cardul sd, notele muzicale ce compun melodia si se redau; in cazul lipsdi cardului sd sau a inregistarilor se va afisa un mesaj specific pe ecranul lcd;
state 3(joc): se va afusa pe ecranul lcd nota muzicala random ce se doreste a fi apasata, se asteapta inputul utilizatorului, daca aceasata este corect se genereaza o alta nota muzicala, altfel se va afisa pe ecran un mesaj specific
Rezultate Obţinute
Concluzii
Realizarea acestui proiect a contribuit la aprofundarea subiectiva a cunostintelor dobandite atat la laborator, cat si la curs. Acesta a reprezentat un prilej spre a a-mi consolida skill-urile de utilizare si interconectare a componentelor hardware, aceasta nefiind o activitatea tocmai familara mie. De asemenea, gasirea solutiilor cu privire la implementare au reprezentat o provocare: repartizarea eficienta a pinilor de pe placuta Arduino, utilizarea unui multiplexor pentru a reduce numarul de pini corespunzatori butoanelor-caple, utilizarea modulului scriere/citire pentru cardul SD si a ecranului LCD.
Download
Jurnal
05.05.2023 - Milestone proiect - documentație: alegerea temei proiectului și a funcționalităților de bază
19.05.2023 - Milestone - hardware: conectarea elementelor hardware și realizarea schemei electrice
26.05.2023 - Milestone - software: implementarea codului și finalizarea proiectului
Bibliografie/Resurse