This shows you the differences between two versions of the page.
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 I2C. Aceasta permite controlul ecranului LCD pentru a afisa mesaje text. |
- | * 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 ===== | + | 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 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ă ;-). | + | setup() |
+ | Configureaza initial pinurile, afisajul 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 Alin, 331CC -> **: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 LCD. Inregistreaza 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 mesajelor, precum ș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 ===== |