This shows you the differences between two versions of the page.
pm:prj2023:apredescu:karaoke-machine [2023/05/30 00:14] andrei.otetea [Software Design] |
pm:prj2023:apredescu:karaoke-machine [2023/05/30 00:33] (current) andrei.otetea [Software Design] |
||
---|---|---|---|
Line 42: | Line 42: | ||
* **void setup()**- Setez seriala pe 9600 baud, inițializez obiectele TMRpcm și SdFat, inițializez LCD-ul și configurez întreruperile pentru Timer2 la 10ms. | * **void setup()**- Setez seriala pe 9600 baud, inițializez obiectele TMRpcm și SdFat, inițializez LCD-ul și configurez întreruperile pentru Timer2 la 10ms. | ||
* **ISR(TIMER2_COMPA_vect)** - o dată la 10ms, atunci când e cazul, cresc timpul trecut din melodie si actualizez scorul | * **ISR(TIMER2_COMPA_vect)** - o dată la 10ms, atunci când e cazul, cresc timpul trecut din melodie si actualizez scorul | ||
- | * **void loop()**- verific dacă oricare dintre butoane sunt apăsate, dacă nu e pauză verific dacă ar trebui modificat textul de pe LCD și, dacă primesc comanda **S** pe serială afișez scorul curent | + | * **void loop()**- verific dacă oricare dintre butoane sunt apăsate, dacă nu e pauză verific dacă ar trebui modificat textul de pe LCD și citesc noul text care ar trebui afișat pe LCD, și, dacă primesc comanda **S** pe serială afișez scorul curent |
* **void displayTextOnLCD(const char* text)** - afișează textul primit pe ambele linii ale LCD-ului | * **void displayTextOnLCD(const char* text)** - afișează textul primit pe ambele linii ale LCD-ului | ||
* **bool isWAV(const char* filename)** - verifică dacă un fișier are extensia .wav. | * **bool isWAV(const char* filename)** - verifică dacă un fișier are extensia .wav. | ||
Line 49: | Line 49: | ||
* **unsigned long parseTimestamp(const char* timestampStr)** - transformă un string ce conține ora în formatul MM:SS.MM în milisecunde. | * **unsigned long parseTimestamp(const char* timestampStr)** - transformă un string ce conține ora în formatul MM:SS.MM în milisecunde. | ||
* **void performAction(int buttonIndex)** - în funcție de butonul apăsat, execută acțiunea asociată lui | * **void performAction(int buttonIndex)** - în funcție de butonul apăsat, execută acțiunea asociată lui | ||
+ | * mic on/off | ||
+ | * pause/play | ||
+ | * next - de fiecare dată când apăs next trec la următoarea melodie de pe cardul microSD. Dacă am epuizat toate melodiile, o iau de la început. De asemenea, deschid și fișierul cu lyrics, folosind același basename, schimbând doar extensia și afișez pe LCD titlul melodiei curente | ||
Ca să pot folosi biblioteca TMRpcm a trebuit sa modific in fișierul de configurare **pcmConfig.h** sa decomentez urmatoarele: | Ca să pot folosi biblioteca TMRpcm a trebuit sa modific in fișierul de configurare **pcmConfig.h** sa decomentez urmatoarele: | ||
Line 54: | Line 57: | ||
* **#define SDFAT** - ca sa pot folosi împreună cu biblioteca SdFat | * **#define SDFAT** - ca sa pot folosi împreună cu biblioteca SdFat | ||
* **#define buffSize 128** - am crescut buffer-ul | * **#define buffSize 128** - am crescut buffer-ul | ||
+ | |||
=== Setup date microSD === | === Setup date microSD === | ||
- | Pentru a stoca fișierele am ales formatul WAV și am comprimat fișierele cu următoarele setări pe site-ul [[https://audio.online-convert.com/convert-to-wav]]: | + | Pentru a stoca fișierele audio am ales formatul WAV și am comprimat fișierele cu următoarele setări pe site-ul [[https://audio.online-convert.com/convert-to-wav]]: |
- | * Bit resolution: 8 Bit | + | * Rezoluție biți: 8 Bit |
- | * Sampling rate: 16000 Hz | + | * Rata de eșantionare: 16000 Hz |
- | * Audio channels: mono | + | * Canale audio: mono |
- | * PCM format: PCM unsigned 8-bit | + | * Format PCM: PCM U8 |
- | Fișierele LRC stochează versurile în acest format: | + | Pentru a stoca lyrics am folosit fișiere LRC; acestea stochează versurile în acest format: |
[00:33.95]We are the champions, my friends | [00:33.95]We are the champions, my friends |