This shows you the differences between two versions of the page.
pm:prj2023:apredescu:electronic_keyboard [2023/05/28 22:49] andreea.vodita [Jurnal] |
pm:prj2023:apredescu:electronic_keyboard [2023/05/30 08:08] (current) andreea.vodita [Download] |
||
---|---|---|---|
Line 46: | Line 46: | ||
<code> | <code> | ||
- | ISR(PCINT0_vect) { | + | ISR(INT0_vect) { |
- | if ((PIND & (1 << Switch)) == 0) { | + | // Increment switchState and wrap around if necessary |
- | // Increment currentWavType and wrap around if necessary | + | if (millis() - lastDebounceTime >= debounceDelay) { |
- | switchState = (switchState + 1) % WAV_TYPE_COUNT; | + | if ((PIND & (1 << Switch)) == 0) { |
+ | lastDebounceTime = millis(); | ||
+ | switchState = (switchState + 1) % WAV_TYPE_COUNT; | ||
+ | Serial.println(switchState); | ||
+ | } | ||
} | } | ||
} | } | ||
Line 93: | Line 97: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Cum TMRpcm nu are suport pentru redarea sunetului concurent și, în general, Arduino Uno este limitat în această privință din cauza memoriei necesare stocării mai multor fișiere audio în același timp și complexității mai mari a programului, se poate reda o singură notă în același timp. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | Dacă nu aș fi folosit fișiere audio, problema ar fi fost rezolvată. În loc ca fiecare buton să genereze un sunet la o anumită frecvență, aș fi adunat frecvențele tuturor pentru a compune o frecvență finală pe care o reda difuzorul. | ||
+ | |||
+ | O altă problemă întâmpinată a fost faptul că anumite întreruperi interferau unele cu altele. Astfel, în loc să folosesc PCINT0 pentru întreruperea specifică butonului de Switch, din cauză că nu funționa corect împreună cu TIMER1, folosit la difuzor, am modificat la o întrerupere externă, INT0. | ||
+ | |||
+ | Rezultatele sunt cele așteptate: la apăsarea butoanelor se redă sunetul corespunzător și ciclează printre fișierele audio prin folosirea butonului de Switch. Totuși, având în vedere difuzorul folosit, sunetele sunt neclare. Acesta este un lucru pe care l-aș schimba cu siguranță pentru a îmbunătăți proiectul. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Proiectul demonstrează utilizarea modulului de card SD pentru a stoca si a prelua fișiere audio, biblioteca TMRpcm pentru redarea audio și utilizarea întreruperilor pentru a gestiona evenimentele de intrare. | ||
+ | |||
+ | Poate fi folosit în diverse aplicații în care este necesară redarea audio, cum ar fi playere muzicale, sisteme de efecte sonore, instalații interactive și proiecte educaționale. | ||
+ | |||
+ | Realizând acest proiect am învățat multe lucruri pe care nu le cunoșteam înainte și am întâmpinat probleme atât hardware, cât și software pe care nu le anticipasem. M-a făcut să am mai multă apreciere și respect pentru persoanele care lucrează cu astfel de module. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | Arhiva conține codul sursă și sample-urile de 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ă ;-). | + | |
+ | {{:pm:prj2023:apredescu:piano.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> | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 113: | Line 124: | ||
* 28.05.2023 - Software | * 28.05.2023 - Software | ||
+ | ===== Bibliografie/Resurse ===== | ||
- | <note tip> | + | Resurse Hardware: |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * Set-up inițial al unui mini-pian: https://projecthub.arduino.cc/rahulkhanna/arduino-tutorial-mini-piano-0c7ec5 |
- | </note> | + | * Laboratoare de PM (în special SPI pentru conectarea corectă a modulului SD) |
- | + | ||
- | ===== Bibliografie/Resurse ===== | + | |
- | <note> | + | Resurse Software: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * Sample de note pentru vioară: https://depositonce.tu-berlin.de/items/f81ba73c-4d9b-48de-9fbc-31cb03d5b9bc |
- | </note> | + | * Sample de note pentru flaut: https://freesound.org/people/MTG/packs/20209/ |
+ | * Sample de note pentru pian: https://pixabay.com/sound-effects/search/piano-notes/ | ||
+ | * Biblioteca TMRpcm: https://www.arduinolibraries.info/libraries/tm-rpcm | ||
+ | * Laboratoare de PM | ||
+ | * Forumuri Arduino | ||
+ | * Multe conversații cu ChatGPT | ||
<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> | ||