Differences

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

Link to this comparison view

pm:prj2024:rpascale:andrei.nedelcu1503 [2024/05/10 01:30]
andrei.nedelcu1503
pm:prj2024:rpascale:andrei.nedelcu1503 [2024/05/27 17:40] (current)
andrei.nedelcu1503
Line 7: Line 7:
 Butoanele de apasare vor fi conectate la Arduino prin pinul analog A0. Vom folosi functia tone() a Arduino-ului pentru a genera semnale de frecvente diferite, producand diverse sunete prin intermediul buzzerului. În loc sa utilizam pini individuali pentru fiecare buton, vom folosi o tehnică de divizare a tensiunii folosind valori diverse ale rezistentelor,​ reducand astfel necesitatea de a folosi mai multi pini. Acest lucru ne permite sa includem componente suplimentare,​ precum afișajul LCD unde vom putea vizualiza actiunile pe care le facem. Butoanele de apasare vor fi conectate la Arduino prin pinul analog A0. Vom folosi functia tone() a Arduino-ului pentru a genera semnale de frecvente diferite, producand diverse sunete prin intermediul buzzerului. În loc sa utilizam pini individuali pentru fiecare buton, vom folosi o tehnică de divizare a tensiunii folosind valori diverse ale rezistentelor,​ reducand astfel necesitatea de a folosi mai multi pini. Acest lucru ne permite sa includem componente suplimentare,​ precum afișajul LCD unde vom putea vizualiza actiunile pe care le facem.
 În timpul modului de inregistrare,​ utilizatorii pot reda melodiile dorite in timp ce Arduino-ul inregistrează secventa și durata apasarilor butoanelor. Acest lucru este realizat prin monitorizarea tensiunilor analogice de pe pinul A0 și determinarea butonului apasat. Secventa si durata inregistrata sunt stocate în tablouri. La comutarea în modul de redare, Arduino-ul reda secvența inregistrata de tonuri pe baza datelor stocate. În timpul modului de inregistrare,​ utilizatorii pot reda melodiile dorite in timp ce Arduino-ul inregistrează secventa și durata apasarilor butoanelor. Acest lucru este realizat prin monitorizarea tensiunilor analogice de pe pinul A0 și determinarea butonului apasat. Secventa si durata inregistrata sunt stocate în tablouri. La comutarea în modul de redare, Arduino-ul reda secvența inregistrata de tonuri pe baza datelor stocate.
 +
 + ​{{:​pm:​prj2024:​rpascale:​pm_project_piano.png?​700|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 12: Line 14:
 Lista de componente utilizate: Lista de componente utilizate:
   * Arduino Uno   * Arduino Uno
-  * LCD Display ​1602+  * LCD 1602 cu interfata I2C
   * Breadboard   * Breadboard
   * Fire de conexiune   * Fire de conexiune
   * Resistoare   * Resistoare
   * Buzzer   * Buzzer
-  * Potentiometru 10k +  * Switch
-  * SPDT Switch+
   * 8 Butoane   * 8 Butoane
 +
 +Schema electrica:
 +{{ :​pm:​prj2024:​rpascale:​rec_play_piano_scheme.png?​700 |}}
 +{{ :​pm:​prj2024:​rpascale:​record_and_play_piano_elec_scheme.jpg?​800|}}
 +{{:​pm:​prj2024:​rpascale:​proof_of_concept_piano.jpeg?​600|}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +Mediu de Dezvoltare: Arduino IDE
  
-<note tip> +Librarii si Surse 3rd-Party
-Descrierea codului aplicaţiei (firmware)+Codul utilizeaza biblioteca LiquidCrystal_I2C.h pentru a facilita interactiunea cu afisajele LCD I2CAceasta permite controlul ecranului LCD pentru a afisa mesaje text.
-  * mediu de dezvoltare (if any) (e.gAVR 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 =====+Algoritmi si Structuri Implementate 
 +Aplicatia implementeaza un sistem de inregistrare si redare a notelor muzicale. Jucatorul poate apasa butoane care corespund unor note muzicale, iar sistemul inregistreaza secventa acestora si o reda ulterior.
  
-<note tip> +Initializarea LCD-ului: 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +Functia setup() initializeaza afisajul LCD si afiseaza un mesaj introductiv.
-</​note>​+
  
-===== Concluzii =====+Detectarea apasarii butoanelor:​ 
 +Functia Detect_button() citeste valoarea analogica de la un pin si determina ce buton a fost apasat. Valorile detectate sunt stocate intr-un array pentru a fi redate ulterior.
  
-===== Download =====+Redarea sunetelor:​ 
 +Functia Play_tone() gestioneaza redarea sunetelor corespunzatoare fiecarui buton apasat. De asemenea, aceasta afiseaza nota curenta pe ecranul LCD si inregistreaza durata fiecarei note.
  
-<note warning> +Surse si Functii Implementate:​ 
-O arhivă ​(sau mai multe dacă este cazulcu 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ă ;-).+setup() 
 +Configureaza initial pinurileafisajul LCD si afiseaza ​un mesaj de bun venit.
  
-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 Alin331CC -> **:pm:prj2009:cc:dumitru_alin**. +loop() 
-</​note>​+Bucleaza continuu pentru a detecta apasarile de buton si a reda notele inregistrate. Comuta intre modurile de inregistrare si redare ​pe baza starii unui buton. 
 + 
 +Detect_button() 
 +Detecteaza ce buton a fost apasat pe baza valorii analogice citite ​de la un pin si stocheaza aceste informatii in array-uri pentru redare ulterioara. 
 + 
 +Play_tone() 
 +Reda sunetul corespunzator butonului apasat si afiseaza nota pe LCDInregistreaza durata fiecarei note. 
 + 
 + 
 +===== Rezultate Obţinute si Concluzii ===== 
 +Am creat un pian capabl sa inregistreze si sa redea sunetele inregistrare. Proiectul include un ecran LCD pentru afișarea notelor și mesajelorprecum și un buzzer pentru redarea sunetelor. Interfața intuitivă permite utilizatorilor să înregistreze și să redea cu ușurință melodii. 
 + 
 +===== Download ===== 
 + 
 +{{:pm:prj2024:rpascale:record_play_piano_code.zip|}}
  
 ===== Jurnal ===== ===== Jurnal =====
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +03.04.2024 - alegerea temei
-</​note>​+
  
-===== Bibliografie/​Resurse =====+02.05.2024 - crearea paginii ocw
  
-<​note>​ +03.05.2024 - documentație inițială 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+ 
 +14.05.2024 ​finalizare hardware 
 + 
 +19.05.2024 - finalizare software
 </​note>​ </​note>​
  
-<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</a></​html>​+===== Bibliografie/Resurse ===== 
pm/prj2024/rpascale/andrei.nedelcu1503.1715293802.txt.gz · Last modified: 2024/05/10 01:30 by andrei.nedelcu1503
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