This shows you the differences between two versions of the page.
pm:prj2023:dene:pianinteligent [2023/05/22 00:17] athanasia.popa |
pm:prj2023:dene:pianinteligent [2023/05/29 22:58] (current) athanasia.popa [Rezultate Obţinute] |
||
---|---|---|---|
Line 39: | Line 39: | ||
<note tip> | <note tip> | ||
{{:pm:prj2023:dene:pm.png?600|}} | {{:pm:prj2023:dene:pm.png?600|}} | ||
- | {{:pm:prj2023:dene:dsc_1906.jpg?600|}} | + | {{:pm:prj2023:dene:pian_pm.jpg?600|}} |
+ | {{:pm:prj2023:dene:pian_pm_0.jpg?600|}} | ||
</note> | </note> | ||
- | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă de piese | ||
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
- | * diagrame de semnal | ||
- | * rezultatele simulării | ||
- | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 54: | Line 48: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Mediul de dezvoltare folosit a fost Arduiono IDE, iar bibilotecile utilizate sunt: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * <LiquidCrystal.h> pentru utilizarea modulului LCD I2C |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * <Tone.h> pentru redarea sunetelor |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * <SD.h> si <SPI.h> pentru folosirea modulului de scriere/citire a cardului SD |
- | * (etapa 3) surse şi funcţii implementate | + | |
+ | Implementare: | ||
+ | * global se initializeaza si declarat un array cu valorile frecventelor specifice notelor muzicale, un array cu denumirea acestora si pini utilizati; | ||
+ | * modul in care se afla pianul (canta, inregistrare, redare, joc) este reprezentat de variabila state care care corespunde unea dintre aceste stari | ||
+ | * setup():se declar modul fiecarui pin, se initializeaza lcd-ul si se seteaza seed-ul pentru generatorul de numere random folosit la partea de joc | ||
+ | * changeState():se citeste valoarea receptate de la potentiometru si se mapeaza aceasta valoare cu modul in care se afla pianul, prin incadrarea valorii citite in intr-un interval specific modului respectiv | ||
+ | * pressedButton():determina ce clapa/buton a fost apelat si intoarce indexul acestuia sau -1 in cazul in care niciun buton nu a fost apasat prin selectarea secventiala a canalelor multiplexorului si determinarea starii de HIGH/LOW a acestora | ||
+ | * loop(): se verifica in ce mod este pianul(cu ajutorul functiei state) si se executa codul specific starii respective | ||
+ | - starea 0(canta): se determine butonul/clapa apasata (cu ajutorul functiei pressedButton()), se reda nota corespunzataoare clapei respective si se afiseaza pe ecranul lcd denumirea notei muzicale | ||
+ | - starea 1(inregistrare): se determine butonul/clapa apasata (cu ajutorul functiei pressedButton()), se reda nota corespunzatoare clapei respective, se deschide fisierul corespunzator inregistarii de pe cardul SD si se scrie indexul ntei tocmai apasta in acesta; in cazul in care nu a fost introdus cardul sd se va afisa un mesaj specific | ||
+ | - state 2(redare): se citesc din fisierul corespunzator inregistarii, de pe cardul sd, notele muzicale ce compun melodia si se redau; in cazul lipsdi cardului sd sau a inregistarilor se va afisa un mesaj specific pe ecranul lcd; | ||
+ | - state 3(joc): se va afusa pe ecranul lcd nota muzicala random ce se doreste a fi apasata, se asteapta inputul utilizatorului, daca aceasata este corect se genereaza o alta nota muzicala, altfel se va afisa pe ecran un mesaj specific | ||
</note> | </note> | ||
Line 64: | Line 70: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2023:dene:pian_pm_1.jpg?400|}} |
+ | {{:pm:prj2023:dene:pian_pm_2.jpg?400|}} | ||
+ | {{:pm:prj2023:dene:pian_pm_3.jpg?400|}} | ||
+ | {{:pm:prj2023:dene:pian_pm_4.jpg?400|}} | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Realizarea acestui proiect a contribuit la aprofundarea subiectiva a cunostintelor dobandite atat la laborator, cat si la curs. Acesta a reprezentat un prilej spre a a-mi consolida skill-urile de utilizare si interconectare a componentelor hardware, aceasta nefiind o activitatea tocmai familara mie. De asemenea, gasirea solutiilor cu privire la implementare au reprezentat o provocare: repartizarea eficienta a pinilor de pe placuta Arduino, utilizarea unui multiplexor pentru a reduce numarul de pini corespunzatori butoanelor-caple, utilizarea modulului scriere/citire pentru cardul SD si a ecranului LCD. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
- | 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ă ;-). | + | Arhiva resurse software: {{:pm:prj2023:dene:proiect_pm_popa_athanasia.zip|}} |
- | + | ||
- | 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> | </note> | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | * 05.05.2023 - Milestone proiect - documentație: alegerea temei proiectului și a funcționalităților de bază |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * 19.05.2023 - Milestone - hardware: conectarea elementelor hardware și realizarea schemei electrice |
- | </note> | + | * 26.05.2023 - Milestone - software: implementarea codului și finalizarea proiectului |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | **Resurse Software**: |
+ | * https://arduinogetstarted.com/tutorials/arduino-write-variable-to-sd-card | ||
+ | * https://reference.arduino.cc/reference/cs/language/functions/advanced-io/tone/ | ||
+ | * laboratoare ocw | ||
+ | **Resurse Hardware**: | ||
+ | * https://www.youtube.com/watch?v=R00FpEipWY4&list=WL&index=20 | ||
+ | * https://forum.arduino.cc/t/using-the-cd74hc4067-multiplexer-with-push-buttons/636536 | ||
+ | * https://www.electrokit.com/uploads/productfile/41015/41015739_-_SD_Card_Module.pdf | ||
+ | * laboratoare ocw | ||
</note> | </note> | ||
<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> |