Before I start, let me just say that I am new to Arduino stuff and don't know much about computers/electronics. Please dumb your answers down for me. (:
SO, I recently purchased a UART Serial MP3 Music Player, purchased at this website. I downloaded the libraries provided in the specs of the shield (from this Google folder.) It's the one called RedMP3.
When I plug my Uno in, all I get is static from the speaker, even when I run the 'simple test' code. (I can't remember where I downloaded it from, sorry.) Here it is:
#include <SoftwareSerial.h>
#define ARDUINO_RX 0//should connect to TX of the Serial MP3 Player module
#define ARDUINO_TX 1//connect to RX of the module
SoftwareSerial myMP3(ARDUINO_RX, ARDUINO_TX);
static int8_t Send_buf[6] = {0} ;
/************Command byte**************************/
/*basic commands*/
#define CMD_PLAY 0X01
#define CMD_PAUSE 0X02
#define CMD_NEXT_SONG 0X03
#define CMD_PREV_SONG 0X04
#define CMD_VOLUME_UP 0X05
#define CMD_VOLUME_DOWN 0X06
#define CMD_FORWARD 0X0A // >>
#define CMD_REWIND 0X0B // <<
#define CMD_STOP 0X0E
#define CMD_STOP_INJECT 0X0F//stop interruptting with a song, just stop the interlude
/*5 bytes commands*/
#define CMD_SEL_DEV 0X35
#define DEV_TF 0X01
#define CMD_IC_MODE 0X35
#define CMD_SLEEP 0X03
#define CMD_WAKE_UP 0X02
#define CMD_RESET 0X05
/*6 bytes commands*/
#define CMD_PLAY_W_INDEX 0X41
#define CMD_PLAY_FILE_NAME 0X42
#define CMD_INJECT_W_INDEX 0X43
/*Special commands*/
#define CMD_SET_VOLUME 0X31
#define CMD_PLAY_W_VOL 0X31
#define CMD_SET_PLAY_MODE 0X33
#define ALL_CYCLE 0X00
#define SINGLE_CYCLE 0X01
#define CMD_PLAY_COMBINE 0X45//can play combination up to 15 songs
void sendCommand(int8_t command, int16_t dat );
void setup()
{
myMP3.begin(9600);
delay(500);//Wait chip initialization is complete
sendCommand(CMD_SEL_DEV, DEV_TF);//select the TF card
delay(200);//wait for 200ms
playWithVolume(0X0F01);//play the first song with volume 15(0x0F) class
}
void loop()
{
}
void setVolume(int8_t vol)
{
mp3_5bytes(CMD_SET_VOLUME, vol);
}
void playWithVolume(int16_t dat)
{
mp3_6bytes(CMD_PLAY_W_VOL, dat);
}
/*cycle play with an index*/
void cyclePlay(int16_t index)
{
mp3_6bytes(CMD_SET_PLAY_MODE,index);
}
void setCyleMode(int8_t AllSingle)
{
mp3_5bytes(CMD_SET_PLAY_MODE,AllSingle);
}
void playCombine(int8_t song[][2], int8_t number)
{
if(number > 15) return;//number of songs combined can not be more than 15
uint8_t nbytes;//the number of bytes of the command with starting byte and ending byte
nbytes = 2*number + 4;
int8_t Send_buf[nbytes];
Send_buf[0] = 0x7e; //starting byte
Send_buf[1] = nbytes - 2; //the number of bytes of the command without starting byte and ending byte
Send_buf[2] = CMD_PLAY_COMBINE;
for(uint8_t i=0; i < number; i++)//
{
Send_buf[i*2+3] = song[i][0];
Send_buf[i*2+4] = song[i][1];
}
Send_buf[nbytes - 1] = 0xef;
sendBytes(nbytes);
}
void sendCommand(int8_t command, int16_t dat = 0)
{
delay(20);
if((command == CMD_PLAY_W_VOL)||(command == CMD_SET_PLAY_MODE)||(command == CMD_PLAY_COMBINE))
return;
else if(command < 0x10)
{
mp3Basic(command);
}
else if(command < 0x40)
{
mp3_5bytes(command, dat);
}
else if(command < 0x50)
{
mp3_6bytes(command, dat);
}
else return;
}
void mp3Basic(int8_t command)
{
Send_buf[0] = 0x7e; //starting byte
Send_buf[1] = 0x02; //the number of bytes of the command without starting byte and ending byte
Send_buf[2] = command;
Send_buf[3] = 0xef; //
sendBytes(4);
}
void mp3_5bytes(int8_t command, uint8_t dat)
{
Send_buf[0] = 0x7e; //starting byte
Send_buf[1] = 0x03; //the number of bytes of the command without starting byte and ending byte
Send_buf[2] = command;
Send_buf[3] = dat; //
Send_buf[4] = 0xef; //
sendBytes(5);
}
void mp3_6bytes(int8_t command, int16_t dat)
{
Send_buf[0] = 0x7e; //starting byte
Send_buf[1] = 0x04; //the number of bytes of the command without starting byte and ending byte
Send_buf[2] = command;
Send_buf[3] = (int8_t)(dat >> 8);//datah
Send_buf[4] = (int8_t)(dat); //datal
Send_buf[5] = 0xef; //
sendBytes(6);
}
void sendBytes(uint8_t nbytes)
{
for(uint8_t i=0; i < nbytes; i++)//
{
myMP3.write(Send_buf[i]) ;
}
}
As the manual from the Google Drive suggests, I run a Serial Debug Assistant (found here) and either receive no response or '7E 03 35 01 EF 7E 04 31 0F 01 EF '. I have no idea what a serial debug assistant even is, to be honest, and I'm getting very flustered because I can't figure out why my shield isn't working.
Please, if you have any advice or ideas, let me know. Thank you so much!