Electronic piano keybaord

Introducere

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ă.

Descriere generală

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ă.

Hardware Design

  • Arduino UNO
  • Butoane push
  • LED
  • Poetntiometru
  • Ecran LCD 16×2
  • Buzzer
  • Rezistente
  • Diverse fire

Configurare pini

Pentru butoane:

  • Primul buton este conectat la pinul digital 1 la Arduino Uno;
  • Al doilea buton este conectat la pinul digital 2 la Arduino Uno;
  • Al treilea buton este conectat la pinul digital 3 la Arduino Uno;
  • Al patrulea buton este conectat la pinul digital 4 la Arduino Uno;
  • Al cincilea buton este conectat la pinul digital 5 la Arduino Uno;
  • Al saselea buton este conectat la pinul digital 6 la Arduino Uno;
  • Al saptelea buton este conectat la pinul digital 7 la Arduino Uno;

Pentru buzzer:

  • Pinul buzzer-ului este conectat la pinul A2 la Arduino Uno.

Pentru ecranul LCD 16×2:

  • RS -conectat la pinul digital 8 al Arduino Uno;
  • EN -conectat la pinul digital 9 al Arduino Uno;
  • D4 -conectat la pinul digital 10 al Arduino Uno;
  • D5 -conectat la pinul digital 11 al Arduino Uno;
  • D6 -conectat la pinul digital 12 al Arduino Uno;
  • D7 -conectat la pinul digital 13 al Arduino Uno.

Pentru butonul separat:

  • Ultimul buton separat este conectat la pinul A1 al Arduino Uno.

Pentru LED:

  • LED-ul este conectat la pinul A5 al Arduino Uno.

Schema Electrica

Design final

placuta-finala.jpg

placuta_finala2.jpg

Software Design

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.

400

Demo: https://youtu.be/_fADIbFztgs

Concluzii

Bibliografie/Resurse

pm/prj2023/avaduva/electronic_piano_keyboard.txt · Last modified: 2023/05/29 23:39 by iulia_nicole.mihai
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