This is an old revision of the document!
Autor: Ciuche Bianca-Andreea
Grupa: 335CA
Proiectul curent este reprezentat de un pian electric avansat.
Acesta, pe langa functionalitatea unui pian oarecare de a emite sunete la atingerea clapelor, are cateva moduri care face utilizarea acestuia mult mai interesanta: are incorporat jocul Piano Tiles. Intr-o anumita masura, acest proiect poate fi o introducere in lumea pianului pentru incepatori, intrucat modul Piano Tiles incurajeaza invatarea unor melodii simple la pian.
Pentru a face pe plac tuturor utilizatorilor, volumul poate fi reglat cu ajutorul unui potentiometru.
Pianul va avea 3 moduri:
Lista componente:
Intrucat numarul pinilor de pe placuta Arduino Uno este destul de limitat, input-ul de la claviatura va fi transmis pe doar 2 pini analogici. Fiecare buton are curentul limitat de diferite rezistente, obtinand astfel rezultate diferite pe acelasi pin in functie de butonul apasat.
Etapele parcurse de program sunt urmatoarele:
setup()
, se initializeaza toti pinii, timerele, iar inainte de orice, ledurile fac un joc de lumini drept introducere a jocului.loop()
exista 4 variante:getNote()
, playSong()
, pianoTiles()
.
Am folosit timere, unele in mod direct, iar altele indirect prin folosirea unor functii predefinite, astfel:
delay
in functiile de jocuri de lumini. tone()
, functie care m-a ajutat sa controlez buzzerul.
Pe langa acestea, m-am folosit si de intreruperi externe pentru cele 2 butoane: cel de selectie si cel de start/restart. Am folosit PCINT1_vect
pentru butonul de schimb de mod si PCINT2_vect
pentru cel de start/restart.
Pentru controlul claviaturii, dat fiind faptul ca am folosit doar 2 pini analogici pentru 8 butoane, initial am fost nevoita sa aflu valorile de intrare corespunzatoare fiecarui buton, dupa care in functie de ce se citea de pe pinul A0 si A1, am putut deduce ce clapa a fost apasata.
Pentru a intelege cum pot controla ledurile corespunzatoare claviaturii, legate la doar 10 pini (8 pentru coloana si 2 pentru rand), am implementat functiile turnEverythingOn
, turnEverythingOff
, turnOnAndOffAllByColumnSideways
, ledsCircle
. Cu ajutorul primelor functii, am realizat un intro, iar ultima functie este apelata intotdeauna cand nu s-a selectat inca un mod.
25.04.2021 : Alegere tema, completare introducere si descriere generala.
29.04.2021 : Adaugare potentiometru, modificare lista componente, adaugare schema circuit.
19.05.2021 : Adaugare schema Eagle.
24.05.2021 : Adaugare descriere software.