Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:avaduva:electronic_piano_keyboard [2023/05/29 21:59]
iulia_nicole.mihai [Introducere]
pm:prj2023:avaduva:electronic_piano_keyboard [2023/05/29 23:39] (current)
iulia_nicole.mihai [Bibliografie/Resurse]
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 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 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 59: Line 59:
 ===== 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ăsatgenerează un ton corespunzător folosind buzzer-ul șafișează notele muzicale corespunzătoare pe afișajul LCD.\\ ​
-Descrierea codului aplicaţiei ​(firmware)+
-  ​mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi ş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 predefiniteAceasta 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, etcUn fişier README, un ChangeLog, un script de compilare ş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 predefiniteAceste funcții sunt apelate în funcția **presets()** pentru a reda melodiile specifice. \\  
 + 
 +Fișierul header **"​notes.h"​** conține definițiile ș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>​
  
pm/prj2023/avaduva/electronic_piano_keyboard.1685386760.txt.gz · Last modified: 2023/05/29 21:59 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