This shows you the differences between two versions of the page.
pm:prj2023:amocanu:sistem-audio-inteligent [2023/05/27 15:51] andrei.ionescu1411 [Software Design] |
pm:prj2023:amocanu:sistem-audio-inteligent [2023/05/29 12:52] (current) andrei.ionescu1411 [Resurse Software] |
||
---|---|---|---|
Line 73: | Line 73: | ||
</note> | </note> | ||
- | void configure_mpu_timer(): Configureaza registrele pentru Timer0 | + | * ''void configure_mpu_timer()'': Configureaza registrele pentru Timer0 |
+ | |||
+ | * ''void configure_music_timer()'': Configureaza registrele pentru Timer1 | ||
- | void configure_music_timer(): Configureaza registrele pentru Timer1 | + | * ''void configure_buttons()'': Configureaza registrele pentru a putea folosi butoanele de lock si de on-off |
- | void configure_buttons(): Configureaza registrele pentru a putea folosi butoanele de lock si de on-off | + | * ''void setup()'': In functia de setup initializam toti parametri si configuram timerele si butoanele. |
- | void setup(): In functia de setup initializam toti parametri si configuram timerele si butoanele. | + | * ''int16_t compute_biggest_motion(int16_t gyr_x, int16_t gyr_y, int16_t gyr_z)'': Calculeaza in ce directie a fost facuta cea mai ampla miscare si intoarce un numar de la 1 la 6 care indica directia. |
- | int16_t compute_biggest_motion(int16_t gyr_x, int16_t gyr_y, int16_t gyr_z): Calculeaza in ce directie a fost facuta cea mai ampla miscare si intoarce un numar de la 1 la 6 care indica directia. | + | * ''void read_from_mpu()'': Functia citeste datele oferite de giroscop |
- | void read_from_mpu(): Functia citeste datele oferite de giroscop | + | * ''void tambourine_swing()'': In functie de directia si viteza miscarii se da play la sunetul de pe tamburina corespunzator. |
- | void tambourine_swing(): In functie de directia si viteza miscarii se da play la sunetul de pe tamburina corespunzator. | + | * ''void play_strike()'': MPU6050 are integrat si un accelerometru pe care il folosesc sa vad daca jucaria a fost lovita. Daca acceleratia totala depaseste un anumit threshold, inseamna ca s-a detectat o lovitura. In acest caz (daca nu este lock), incrementam contorul de lovituri si daca jucaria nu este in modul IDLE, dam play la sunetul corespunzator. |
- | void play_strike(): MPU6050 are integrat si un accelerometru pe care il folosesc sa vad daca jucaria a fost lovita. Daca acceleratia totala depaseste un anumit threshold, inseamna ca s-a detectat o lovitura. In acest caz (daca nu este lock), incrementam contorul de lovituri si daca jucaria nu este in modul IDLE, dam play la sunetul corespunzator. | + | * ''void play_swing()'': Daca nu s-a detectat o lovitura, dar s-a detectat o miscare, atunci incrementam contorul de swing-uri si dam play la sunetul corespunzator. |
- | void play_swing(): Daca nu s-a detectat o lovitura, dar s-a detectat o miscare, atunci incrementam contorul de swing-uri si dam play la sunetul corespunzator. | + | * ''void idle_finished_music()'', ''void lightsaber_finished_music()'', ''void tambourine_finished_music()'': Cele 3 functii sunt apelate in functie de modul in care se afla jucaria atunci cand s-a terminat sunetul anterior. In caz ca suntem in modul tamburina, atunci nu se da play la nimic, altfel se pune o melodie prestabilita. |
- | void idle_finished_music(), void lightsaber_finished_music(), void tambourine_finished_music(): Cele 3 functii sunt apelate in functie de modul in care se afla jucaria atunci cand s-a terminat sunetul anterior. In caz ca suntem in modul tamburina, atunci nu se da play la nimic, altfel se pune o melodie prestabilita. | + | * ''void set_mode_to_idle()'', ''void set_mode_to_lightsaber()'', ''void set_mode_to_tambourine()'': Atunci cand se atinge threshold-ul de 3 miscari/3 lovituri si jucaria nu este “locked”, atunci se trece dintr-o stare in alta. In functie de starea in care se trece, se apeleaza una dintre aceste functii care initializeaza toti parametri necesari respectivului mod si reseteaza contoarele de miscari. |
- | void set_mode_to_idle(), void set_mode_to_lightsaber(), void set_mode_to_tambourine(): Atunci cand se atinge threshold-ul de 3 miscari/3 lovituri si jucaria nu este “locked”, atunci se trece dintr-o stare in alta. In functie de starea in care se trece, se apeleaza una dintre aceste functii care initializeaza toti parametri necesari respectivului mod si reseteaza contoarele de miscari. | + | * ''void switch_on()'': Functia seteaza modul current sa fie ultimul mod inainte de inchidere. |
- | void switch_on(): Functia seteaza modul current sa fie ultimul mod inainte de inchidere. | + | * ''void switch_off()'': Functia reinitializeaza toti parametri si opreste melodia curenta, daca vreuna este cantata in acel moment. |
- | void switch_off(): Functia reinitializeaza toti parametri si opreste melodia curenta, daca vreuna este cantata in acel moment. | + | * ''void loop()'': Functia loop pune totul cap la cap. Se verifica daca jucaria este deschisa, si daca da, se verifica apoi daca a fost apasat butonul de lock pentru a bloca sau debloca jucaria, pentru a face modificarile necesare. Apoi se verifica daca numarul de miscari sau de lovituri a trecut de threshold-ul de 3, caz in care in functie de starea curenta seteaza urmatoarea stare a jucariei. In continuare se verifica daca melodia care era cantata s-a terminat, si daca da, atunci in functie de mod ori se va pune o melodie dintr-un pool (IDLE), un sunet standard de “bazait” (sabie laser), sau nu se aude nimic in cazul tamburinei. Nu in ultimul rand, se verifica daca trebuie sa se citeasca datele de la giroscop si in functie de acestea se pune sau nu o melodie noua. |
- | + | ||
- | void loop(): Functia loop pune totul cap la cap. Se verifica daca jucaria este deschisa, si daca da, se verifica apoi daca a fost apasat butonul de lock pentru a bloca sau debloca jucaria, pentru a face modificarile necesare. Apoi se verifica daca numarul de miscari sau de lovituri a trecut de threshold-ul de 3, caz in care in functie de starea curenta seteaza urmatoarea stare a jucariei. In continuare se verifica daca melodia care era cantata s-a terminat, si daca da, atunci in functie de mod ori se va pune o melodie dintr-un pool (IDLE), un sunet standard de “bazait” (sabie laser), sau nu se aude nimic in cazul tamburinei. Nu in ultimul rand, se verifica daca trebuie sa se citeasca datele de la giroscop si in functie de acestea se pune sau nu o melodie noua. | + | |
Line 105: | Line 105: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | <html> |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | <iframe |
- | </note> | + | src="https://www.youtube.com/embed/ePulY92bgMM" |
+ | title="YouTube video player" | ||
+ | frameborder="0" | ||
+ | allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | ||
+ | allowfullscreen | ||
+ | style="aspect-ratio: 16/9; width: 100%;" | ||
+ | ></iframe> | ||
+ | </html> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 118: | Line 126: | ||
===== Download ===== | ===== Download ===== | ||
+ | * Arhiva cu schemele electrice : {{:pm:prj2023:amocanu:pm_eagle.zip|}} | ||
+ | * Arhiva cu melodiile : {{:pm:prj2023:amocanu:music.zip|}} | ||
+ | * Arhiva cu codul arduino : {{:pm:prj2023:amocanu:proiect_pm.zip|}} | ||
- | <note warning> | ||
- | 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ş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**. | + | ===== Bibliografie/Resurse ===== |
- | </note> | + | ==== Resurse Hardware ==== |
- | ===== Jurnal ===== | + | https://www.instructables.com/Arduino-Based-Lightsaber-With-Light-and-Sound-Effe/ |
+ | |||
+ | https://www.instructables.com/Audio-Player-Using-Arduino-With-Micro-SD-Card/ | ||
+ | |||
+ | https://wokwi.com/projects/305936654686749250 | ||
+ | |||
+ | |||
+ | ==== Resurse Software ==== | ||
+ | |||
+ | https://github.com/AlexGyver/EnglishProjects/tree/master/GyverSaber | ||
+ | |||
+ | https://github.com/TMRh20/TMRpcm/wiki | ||
+ | |||
+ | https://github.com/ElectronicCats/mpu6050 | ||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
- | ===== Bibliografie/Resurse ===== | ||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </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> | ||