This shows you the differences between two versions of the page.
|
pm:prj2023:dene:pianinteligent [2023/05/07 20:09] athanasia.popa [Descriere generală] |
pm:prj2023:dene:pianinteligent [2023/05/29 22:58] (current) athanasia.popa [Rezultate Obţinute] |
||
|---|---|---|---|
| Line 24: | Line 24: | ||
| <note tip> | <note tip> | ||
| - | Aici puneţi tot ce ţine de hardware design: | + | Lista de piese: |
| - | * listă de piese | + | * Arduino Uno |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * Potentiometru |
| - | * diagrame de semnal | + | * Card SD + Modul scriere/citire card SD |
| - | * rezultatele simulării | + | * Ecran LCD |
| + | * Buzzer | ||
| + | * Butoane | ||
| + | * Multiplexor 16 canale | ||
| + | * Rezistente, fire si breadboard | ||
| </note> | </note> | ||
| + | |||
| + | ===== Schema electrica ===== | ||
| + | |||
| + | <note tip> | ||
| + | {{:pm:prj2023:dene:pm.png?600|}} | ||
| + | {{:pm:prj2023:dene:pian_pm.jpg?600|}} | ||
| + | {{:pm:prj2023:dene:pian_pm_0.jpg?600|}} | ||
| + | </note> | ||
| + | |||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 35: | 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 45: | 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> | ||