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:21]
andrei.nedelcu1503
pm:prj2024:rpascale:andrei.nedelcu1503 [2024/05/27 17:40] (current)
andrei.nedelcu1503
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
 Proiectul presupune construirea unui pian cu butoane care are functia de inregistare si apoi redare pe repeat a continutului inregistrat. Proiectul presupune construirea unui pian cu butoane care are functia de inregistare si apoi redare pe repeat a continutului inregistrat.
 +
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Vom folosi ​funcția ​tone() a Arduino-ului pentru a genera semnale de frecvență ​diferite, ​producând ​diverse sunete prin intermediul buzzerului. Butonurile de apăsare vor fi conectate la Arduino prin pinul analog A0. În loc să utilizăm ​pini individuali pentru fiecare buton, vom folosi o tehnică de divizare a tensiunii folosind valori ​variabile ​ale rezistențelorreducând ​astfel necesitatea de a folosi mai mulți ​pini. Acest lucru ne permite ​să includem componente suplimentare,​ precum afișajul LCD. +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 rezistentelorreducand ​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 înregistrare, utilizatorii pot reda melodiile dorite ​în timp ce Arduino-ul ​înregistrează secvența ​și durata ​apăsărilor ​butoanelor. Acest lucru este realizat prin monitorizarea tensiunilor analogice de pe pinul A0 și determinarea butonului ​apăsatSecvența și durata ​înregistrată ​sunt stocate ​în tablouri. +Î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 ​apasatSecventa 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. 
-Vom programa Arduino-ul pentru a citi tensiunile analogice de pe A0, identifica butoanele apăsate și reda tonurile corespunzătoare. În modul de înregistrare,​ Arduino-ul înregistrează apăsările butoanelor și duratele acestora, stocându-le ​în tablouri. La comutarea în modul de redare, Arduino-ul ​redă secvența ​înregistrată ​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.1715293304.txt.gz · Last modified: 2024/05/10 01:21 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