This shows you the differences between two versions of the page.
pm:prj2023:avaduva:electronic_piano_keyboard [2023/05/29 22:04] iulia_nicole.mihai [Descriere generală] |
pm:prj2023:avaduva:electronic_piano_keyboard [2023/05/29 23:39] (current) iulia_nicole.mihai [Bibliografie/Resurse] |
||
---|---|---|---|
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ă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> | ||