This shows you the differences between two versions of the page.
pm:prj2023:avaduva:electronic_piano_keyboard [2023/05/18 23:36] iulia_nicole.mihai [Hardware Design] |
pm:prj2023:avaduva:electronic_piano_keyboard [2023/05/29 23:39] (current) iulia_nicole.mihai [Bibliografie/Resurse] |
||
---|---|---|---|
Line 3: | Line 3: | ||
<nowiki> | <nowiki> | ||
Acest proiect Arduino este în esența un joc în care utilizatorul va putea să "cânte" la pian. | 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 7 cântece presetate. | + | 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. | 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ă. | 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ă. | ||
Line 9: | Line 9: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
<nowiki> | <nowiki> | ||
- | Tastatura muzicală pe care o construiți 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. | + | 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 volumul și este conectat la un alt pin digital de pe placa Arduino. | + | 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 și analogici ai plăcii Arduino. Buzzer-ul este utilizat pentru a produce sunetele muzicale și este conectat la un alt pin digital de pe placa Arduino. | + | 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 corespunzător pentru a activa buzzer-ul și a produce sunetul muzical. În același timp, ecranul LCD va afișa nota muzicală selectată. | + | Î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 7 cântece presetate prin apăsarea butonului separat. Placa Arduino va trimite semnalul corespunzător pentru a produce sunetele muzicale pentru melodia 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ă. |
</nowiki> | </nowiki> | ||
{{:pm:prj2023:avaduva:schemapmproject.png|}} | {{:pm:prj2023:avaduva:schemapmproject.png|}} | ||
Line 25: | Line 25: | ||
* Rezistente | * Rezistente | ||
* Diverse fire | * 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 16x2:// | ||
+ | *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=== | ===Schema Electrica=== | ||
- | {{:pm:prj2023:avaduva:schemapmproject2.png?700}} | + | {{:pm:prj2023:avaduva:schemapmproject2.png?500}} |
===Design final=== | ===Design final=== | ||
- | {{:pm:prj2023:avaduva:placuta-finala.jpg?700}} | + | {{:pm:prj2023:avaduva:placuta-finala.jpg?500}} |
- | {{:pm:prj2023:avaduva:placuta_finala2.jpg?700}} | + | {{:pm:prj2023:avaduva:placuta_finala2.jpg?500}} |
===== Software Design ===== | ===== 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()**.\\ | ||
- | <note tip> | + | 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.\\ |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | + | 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ă.\\ |
- | <note tip> | + | Î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.\\ |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | Î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.\\ |
- | ===== Download ===== | + | Î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ă. |
- | <note warning> | + | Software-ul utilizează două fișiere header suplimentare pentru gestionarea melodiilor și notelor muzicale.\\ |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
+ | 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.\\ | ||
+ | |||
+ | {{:pm:prj2023:avaduva:schema_software-design.png|400}} | ||
+ | |||
+ | Demo: https://youtu.be/_fADIbFztgs | ||
+ | |||
+ | ===== Concluzii ===== | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
- | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | **Idee proiect** |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | *https://www.instructables.com/Manual-Piano-W-Presets-Songs-Using-Arduino/ |
- | </note> | + | **Resurse software** |
+ | *https://docs.arduino.cc/learn/electronics/lcd-displays | ||
+ | *Github song repository: https://github.com/robsoncouto/arduino-songs | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||