This is an old revision of the document!
Proiectul constă în realizarea unui sistem de karaoke în care utilizatorii primesc puncte. Utilizatorul va putea încărca pe un card microSD melodiile și versurile, urmând ca să vadă versurile pe un ecran LCD, respectiv să audă melodiile într-o boxă legată la un amplificator. De asemenea, utilizatorul va putea primi puncte, dacă cântă cât mai tare în timp ce apar versurile. Utilizatorul va putea trece prin lista de melodii și să selecteze melodia pe care și-o dorește. Acest sistem poate fi atât practic, prin dimensiunile sale reduse, cât și distractiv, putând concura cu alte persoane pentru a obține un scor mai mare. Proiectul este inspirat din jocurile de felul Just Sing sau asemănătoare.
Utilizatorul stochează melodiile în formatul WAV și versurile în formatul LRC. La introducerea cardului de memorie în slot, utilizatorul vede pe ecranul LCD melodia curentă și o poate schimba folosind butonul next. De asemenea, cu butonul play/pause poate continua reluarea melodiei, respectiv poate pune pauză la melodia curentă. În plus, butonul on/off mic pornește/oprește microfonul.
Pe ecranul LCD o să apară versurile curente, iar utilizatorul va putea folosi microfonul pentru a obține puncte, dacă cântă în timp ce apar versurile. Scorul este cu atât mai mare cu cât cântă mai tare.
Melodia se va auzi pe o boxă, sunetul fiind amplificat.
Listă piese:
Schema electrică:
Mediul de dezvoltare folosit în realizarea proiectului: Arduino IDE.
Ca sa pot folosi biblioteca TMRpcm a trebuit sa modific in fișierul de configurare pcmConfig.h sa decomentez urmatoarele:
TODO: Add video
Proiectul în mare a ieșit cum mi-am dorit, sunt sigur că mai pot fi aduse îmbunătățiri. Lucrând la el mi-am însușit mai bine lucrurile învățate la lab.
Singura problemă pe care am întâmpinat-o a fost atunci când am încercat să fac întreruperi pe Timer0 fiindcă mergea în jur de un minut, după se bloca orice interacțiune cu placa(nu mai mergea niciun buton, nu se mai afisa nimic pe serială sau pe LCD, millis() făcea overflow etc.), așa că am folosit Timer2.
Datasheet ATmega328P: https://ocw.cs.pub.ro/courses/_media/pm/atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf
Serial: https://www.arduino.cc/reference/en/language/functions/communication/serial/
LiquidCrystal_I2C: https://reference.arduino.cc/reference/en/libraries/liquidcrystal-i2c/
SdFat: https://reference.arduino.cc/reference/en/libraries/sdfat/
TMRpcm: https://reference.arduino.cc/reference/en/libraries/tmrpcm/