只需要一根数据线,即可操控这个语音播放模块拉。
#define Pin_MP3 26
#define CLEAR 0x0A //清零数字
#define MUSIC_SELECT 0x0B //选取确认
#define VOLUME 0x0C //设置音量
#define EQ 0x0D //设置EQ
#define CYCLICAL_MODE 0x0E //设置循环模式
#define CHANNEL 0x0F //设置通道
#define INTER_CUT 0x10 //设置插播曲目
#define PLAY 0x11 //播放
#define PAUSE 0x12 //暂停
#define STOP 0x13 //停止
#define PREV_MUSIC 0x14 //上一曲
#define NEXT_MUSIC 0x15 //下一曲
#define PREV_CATALOGUE 0x16 //上一目录
#define NEXT_CATALOGUE 0x17 //下一目录
#define SD_CARD 0x18 //选择SD卡
#define USB_FLASH_DISK 0x19 //选择U盘
#define FLASH_DISK 0x1A //选择FLASH
#define SYS_HIBERNATION 0x1B //系统休眠
#define CLOSE_DOWN 0x1C //结束播放
#define TimeBegin1 150
#define TimeBegin2 3500
#define Time3 1230
#define Time1 400
void setup() {
pinMode(Pin_MP3, OUTPUT);
Serial.begin(9600);
Serial.println("*********************");
// Serial.println(myWire.reset());
randomSeed(analogRead(2));
Audio_MixControl(30, VOLUME);
// Audio_OneWireSendData(PLAY);
}
void loop() {
//播放暂停
// Audio_OneWireSendData(PLAY);
// delay(10000);
// Audio_OneWireSendData(PAUSE);
// delay(5000);
//音量调节
// static int a = 30;
// if (a < 0)
// {
// a = 30;
// }
// Audio_MixControl(a, VOLUME);
// a-=7;
//下一首
// Audio_OneWireSendData(NEXT_MUSIC);
// delay(10000);
//播放指定曲目
// int a = random(1, 5);
// Audio_MixControl(12, INTER_CUT);
// delay(20000);
}
void Audio_SwitchSong(int songNum)
{
Audio_OneWireSendData(songNum);
Audio_OneWireSendData(INTER_CUT);
}
void Audio_OneWireSendData(unsigned char data)
{
unsigned char shiftcnt = 0;
digitalWrite(Pin_MP3, 1);
delayMicroseconds(TimeBegin1);
digitalWrite(Pin_MP3, 0);
delayMicroseconds(TimeBegin2);
for (int i = 0; i < 8; i++)
{
unsigned char tmpCh = data & 0x01;
digitalWrite(Pin_MP3, 1);
delayMicroseconds(tmpCh ? Time3 : Time1);
digitalWrite(Pin_MP3, 0);
delayMicroseconds(tmpCh ? Time1 : Time3);
data >>= 1;
}
digitalWrite(Pin_MP3, 1);
}
void Audio_MixControl(unsigned char number, unsigned char command)
{
unsigned char a[2] = {0};
for (int i = 0; i < 2; i++)
{
a[i] = number % 10;
number /= 10;
}
for (int i = 1; i >= 0; i--)
{
Audio_OneWireSendData(a[i]);
}
Audio_OneWireSendData(command);
}