riešil niekto pokusy s týmto mp3 modulom z Číny? https://www.ebay.com/itm/MP3-Player-Voi ... SwVcFdC44T
Snažím sa ho riadiť cez UART pomocou Arduina. Základné príkazy mi fungujú, viď zdroják nižšie - funguje.
Problém mám s výberom konkrétnej skladby podľa čísla v názve. Podľa dokumentácie treba na prehranie skladby pomenovanej 00008.mp3 odoslať reťazec 0xAA, 0x07, 0x02, 0x00, 0x08, 0xBB
Skladby mám pomenované podľa dokumentácie 00001.MP3 - 00008.MP3
Pomocou PREV/NEXT si ich viem prehrať všetky, výber konkrétnej mi už nefunguje. Neviem, či mám niekde chybu v názvoch, ale nepomohol som sa s tým.
Vie mi niekto poradiť, čo s tým?
Funkčný zdroják na ovládanie základných funkcií.
Kód: Vybrať všetko
#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 5); // RX, TX
byte prehrajprvu[6] = {0xAA, 0x07, 0x02, 0x00, 0x02, 0xB5}; // prehra specificku skladbu podla cisla; 0x00 a 0x02 = prehra skladbu na 2. mieste, pozor na CRC
byte play[4] = {0xAA, 0x02, 0x00, 0xAC}; //play
byte pause[4] = {0xAA, 0x03, 0x00, 0xAD}; //pause
byte stp[4] = {0xAA, 0x04, 0x00, 0xAE}; //stop
byte prev[4] = {0xAA, 0x05, 0x00, 0xAF}; //previous
byte next[4] = {0xAA, 0x06, 0x00, 0xB0}; //next
byte volp[4] = {0xAA, 0x14, 0x00, 0xBE}; //volume +
byte volm[4] = {0xAA, 0x15, 0x00, 0xBF}; //volume -
byte volsp[5] = {0xAA, 0x13, 0x01, 0x10, 0xCE}; //hlasitost na specificku uroven 0-30 ; 0x10 = uroven 16 z 31, nezabudni na spocitanie CRC
// posledny bit CRC sa pociita ako sucet vstekych bitov pred CRC
void setup()
{
// Inicializacia HW UART
Serial.begin(9600);
Serial.println("Start");
//Inicializacia SW AUART
mySerial.begin(9600);
Serial.println("===============");
Serial.println("1: PLAY");
Serial.println("2: PAUSE");
Serial.println("3: PREV");
Serial.println("4: NEXT");
Serial.println("5: VOL+");
Serial.println("6: VOL-");
Serial.println("7: STOP");
Serial.println("===============");
}
void loop() // run over and over
{
if (Serial.available() > 0) {
int inByte = Serial.read();
delay(100);
switch (inByte) {
case '1':
for(byte i =0;i<sizeof(play);i++)(mySerial.write(play[i]));
Serial.println("PLAY");
break;
case '2':
for(byte i =0;i<sizeof(pause);i++)(mySerial.write(pause[i]));
Serial.println("PAUSE");
break;
case '3':
for(byte i =0;i<sizeof(prev);i++)(mySerial.write(prev[i]));
Serial.println("PREV");
break;
case '4':
for(byte i =0;i<sizeof(next);i++)(mySerial.write(next[i]));
Serial.println("NEXT");
break;
case '5':
for(byte i =0;i<sizeof(volp);i++)(mySerial.write(volp[i]));
Serial.println("VOL +");
break;
case '6':
for(byte i =0;i<sizeof(volm);i++)(mySerial.write(volm[i]));
Serial.println("VOL-");
break;
case '7':
for(byte i =0;i<sizeof(stp);i++)(mySerial.write(stp[i]));
Serial.println("STOP");
break;
case '8':
break;
default:
{
}
}
delay(200);
}
}
PDF dokumentáciu pridávam v prílohe.
Ďakujem za rady.