Acest proiect Arduino este în esența un joc în care utilizatorul va putea să "cânte" la pian. Proiectul conține o tastatura formată din 7 butoane ce simulează 7 note muzicale ale unui pian, împreună cu un ecran LCD care afișează nota apăsată și un buton separat pentru a selecta unul dintre cele 4 cântece presetate. Scopul proiectului este de a crea o modalitate interactivă și distractivă de a învăța și de a produce muzică folosind tehnologia. Acest proiect este util pentru o varietate de persoane, inclusiv pentru cei care doresc să învețe mai multe despre programare și electronică, dar și pentru cei care își doresc o modalitate distractivă de a produce muzică.
Tastatura muzicală pe care o construiesc se bazează pe placa de dezvoltare Arduino Uno și folosește o combinație de butoane, rezistențe, un potențiometru, un ecran LCD și un buzzer pentru a produce sunetele muzicale. Butoanele sunt utilizate pentru a selecta notele muzicale și sunt conectate la pinii digitali ai plăcii Arduino Uno, iar rezistențele sunt utilizate pentru a limita curentul electric care circulă prin butoane. Potențiometrul este utilizat pentru a controla luminozitatea LCD-ului și este conectat la pinul Vo de pe LCD. Ecranul LCD este utilizat pentru a afișa nota muzicală selectată de utilizator și este conectat la pinii digitali ai plăcii Arduino. Buzzer-ul este utilizat pentru a produce sunetele muzicale și este conectat la un pin analogic de pe placa Arduino. În momentul în care utilizatorul selectează o notă muzicală apăsând butonul corespunzător, placa Arduino va trimite semnalul adecvat pentru a activa buzzer-ul și a produce sunetul muzical. În același timp, ecranul LCD va afișa nota muzicală selectată. În plus, utilizatorul poate selecta unul dintre cele 4 cântece presetate prin apăsarea butonului separat. Placa Arduino va trimite semnalul potrivit pentru a produce sunetele muzicale pentru melodia selectată.
Pentru butoane:
Pentru buzzer:
Pentru ecranul LCD 16×2:
Pentru butonul separat:
Pentru LED:
Software-ul meu implementează un pian manual controlat de butoane, cu afișaj LCD și un buzzer. Codul utilizează biblioteca LiquidCrystal pentru controlul afișajului LCD și definește obiecte și pini pentru butoane, LCD și buzzer. Există două funcții principale în cod: manualPiano() și presets().
Funcția manualPiano() verifică starea butoanelor și în funcție de butonul apăsat, generează un ton corespunzător folosind buzzer-ul și afișează notele muzicale corespunzătoare pe afișajul LCD.
Funcția presets() verifică starea butoanelor și selectează un preset specific pentru a reda o melodie predefinită. Afișajul LCD afișează numele melodiei selectate, iar buzzer-ul redă melodia respectivă.
În plus, LED-ul se aprinde atunci când pianul este în modul de “presets” și redă melodiile predefinite. Aceasta oferă un feedback vizual utilizatorului că melodia este în curs de redare. Pe de altă parte, LED-ul se va stinge atunci când pianul se află în modul de “pian manual”, unde utilizatorul poate cânta manual notele. Astfel, LED-ul servește ca o indicare vizuală a modului de funcționare curent al pianului.
În funcția setup(), sunt inițializați pini și obiecte necesare, cum ar fi pinii butoanelor, pinul buzzer-ului și obiectul pentru controlul LCD-ului.
În funcția loop(), se verifică dacă a fost apăsat un buton pentru a alege între modul manual (pian) sau modul preset (redare melodie). În funcție de modul selectat, se apelează funcțiile corespunzătoare pentru a afișa notele muzicale și a reda sunetele pe buzzer sau pentru a selecta și reda o melodie predefinită.
Software-ul utilizează două fișiere header suplimentare pentru gestionarea melodiilor și notelor muzicale.
Fișierul header “songs.h” conține definițiile și implementările funcțiilor pentru melodiile predefinite. Aceste funcții sunt apelate în funcția presets() pentru a reda melodiile specifice.
Fișierul header “notes.h” conține definițiile și constantele pentru notele muzicale utilizate. Aceste note sunt utilizate în funcții pentru a genera frecvențele corespunzătoare pentru buzzer.