Music Teacher

Introducere

Instrument destinat tuturor pasionatilor de muzica care doresc sa invete sau sa cante cele mai indragite piese de la radio. Acesta vine cu o claviatura luminata, care indruma utilizatorii pe ce clape sa apese.

Descriere generală

Claviatura este formata din butoane, fiecare nota avand asociata un LED. Utilizatorul poate selecta unul din cele trei moduri: Singing Mode, Freestyle Mode si Learning Mode.

Daca selecteaza Singing Mode, buzzerul va reda piesa selectata de utilizator dintr-o lista salvata in memorie.

Daca selecteaza Freestyle Mode, utilizatorul va putea canta la instrument. Fiecare buton (clapa) apasata va lumina LED-ul din dreptul sau.

Daca selecteaza Learning Mode, utilizatorul va putea selecta de pe ecranul LCD ce piesa isi doreste sa invete. LED-urile se vor aprinde in functie de ce nota trebuie sa apase, indrumandu-l astfel pe utilizator. Buzzerul va reda frecventa notei apasate, simuland astfel un pian.

Schema este urmatoarea:

 Schema bloc

Hardware Design

Listă de piese

Componente Motivatie
Placa Arduino UNO Folosita si in cadrul laboratoarelor.
Modul Ecran Nokia 5110 Este mai ieftin și foarte ușor de utilizat cu microcontrolerele.
Buzzer Pasiv Am folosit un buzzer pasiv, si nu unul activ pentru a putea controla tonul si frecventa.
LED-uri Am folosit LED-uri normale, si nu RGB, pentru ca utilizatorul sa faca diferenta intre note.
Butoane Butoane mai mari fata de cele cumparate pentru laborator.
Breadbord Am folosit doua: una pentru a monta claviatura (butoanele, LED-urile si buzzerul) si cealalta pentru a monta LCD-ul si butoanele sale.
Rezistente 470Ω Am calculat ce rezistenta e potrivita pentru LED-urile mele.
Condensator 10uF Am folosit un condensator pentru buzzer, si nu o simpla rezistenta pentru a nu risca sa il ard.
Fire Jumper & Dupont Am preferat sa combin cele doua tipuri de fire pentru a obtine un produs mai practic (de ex. pentru bradboard am folosit firele scurte dupont).

Schema electrica

Software Design

Diagrama de activitate

Descrierea codului aplicaţiei

Mediu de dezvoltare:

  • Arduino IDE

Librării şi surse 3rd-party:

Surse şi funcţii implementate:

  1. project.ino:
    • definesc constantele (notele, butoanele, buzzerul, LED-urile)
    • functia void setup: declar pinii. Initializez comunicatia seriala si ecranul. Setez contrastul la 65 folosind functia setContrast(). Pentru a aplica modificarile pe LCD, folosesc display().
    • functia void loop: apelez drawMenu() care imi creeaza si afiseaza meniul pe ecran (am atasat poze la sectiunea Rezultate Obţinute). Verific starea butoanelor corespunzatoare LCD-ului folosind functiile checkIfDownButtonIsPressed() si checkIfSelectButtonIsPressed(). In functie de ce buton e apasat, si pe ce pagina ma aflu, execut actiunea necesara (fie de activare a unuia din cele trei moduri, fie de selectare a unei melodii).
    • checkIfDownButtonIsPressed(), checkIfSelectButtonIsPressed(): ma folosesc de starea anterioara a butonului pentru a vedea daca acesta a fost sau nu apasat.
  2. freemode.ino:
    • cat timp butonul este setat pe ON, ma aflu in Freestyle Mode. Verific daca vreunul din butoane este apasat, caz in care aprind LED-ul corespunzator cu digitalWrite(LED,HIGH) si redau sunetul cu ajutorul functiei tone(Buzz,NOTE).
  3. play_song1.ino, play_song2.ino, play_song3.ino:
    • fiecare program are retinuta o piesa in memoria locala. Setez tempoul, vectorul in care e retinuta piesa si durata notelor. Apoi, redau cu ajutorul buzzerului melodia. La final, se iese din functie si se intoarce in loop din project.ino.
  4. learn_song1.ino, learn_song2.ino, learn_song3.ino:
    • fiecare program are retinuta o piesa in memoria locala. Retin piesa intr-un vector, apoi aprind pe rand LED-ul din dreptul notei care trebuie apasate. LED-ul se va stinge doar in momentul in care utilizatorul a apasat butonul corect, ajutand-ul astfel sa invete melodia. La final, se iese din functie si se intoarce in loop din project.ino.

Rezultate Obţinute

MENIUL PRINCIPAL

LISTA DE PIESE PENTRU MODUL SINGING

LISTA DE PIESE PENTRU MODUL LEARNING

Concluzii

Proiectul a iesit asa cum mi-am propus. A fost interesant sa invat sa leg singura piesele si a iesit mult mai usor decat ma asteptam. M-au ajutat si diversele tutoriale de pe internet/ documentatii citite. Am atasat o parte din ele in sectiunea de Bibliografie. Nu in cele din urma, mi-a placut sa imbin pasiunea mea pentru muzica cu un proiect pentru facultate. ^_^

Download

Pentru versionarea codului am folosit GitHub: Link Repository GitHub

Repository-ul contine: project.ino, freemode.ino, play_song1.ino, play_song2.ino, play_song3.ino, learn_song1.ino, learn_song2.ino si learn_song3.ino.

Jurnal

Data Task
26.04.2021 Alegere tema proiect & aprobare de catre laborant
01.05.2021 Creare & ajustare pagina wiki
10.05.2021 Mers fizic prin magazine & cumparat o parte din piese
12.05.2021 Montare butoane, buzzer si leduri & testare in Arduino IDE
12.05.2021 Schema electrica in Eagle
14.05.2021 Dat comanda online pentru restul pieselor
17.05.2021 Sosire piese
19.05.2021 Finalizare montaj electric
20,22.05.2021 Realizare parte software
28.05.2021 Finalizare pagina wiki
29.05.2021 Finalizare design proiect & filmare demo

Bibliografie/Resurse

pm/prj2021/abirlica/music_teacher.txt · Last modified: 2021/06/04 17:46 by bianca.fodor
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