音乐盒三(红外遥控)
Language | English |
---|
目的搭建一个音乐盒,可播放TF卡中的音乐文件,用遥控器进行选歌,及音量操作,同时也可以用Joystick进行控制。 原理检测是否有对应的红外遥控信号,根据不同红外信号控制播放音乐。同时检测摇杆X-Y方向的动作,通过读取模拟值来判断。同时判断停留时间长短来选择控制方式。 设备
加载代码
软件调试
if (irrecv.decode(&results)) {
//Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
if (results.value == 0xFFA857)
{
music_status = !music_status; //播放或暂停
if (music_status == true) //播放
{
Serial.println("play"); //串口输出 “play”(工作
audio_play(); //音频工作
}
else //暂停
{
Serial.println("pause"); //串口输出 “pause”(暂停)
audio_pause(); //音频暂停工作
}
}
else if (results.value == 0xFF906F)//下一曲
{
music_num++; //歌曲序号加
if (music_num > music_num_MAX) //限制歌曲序号范围,如果歌曲序号大于30
{
music_num = 1; //歌曲序号返回1
}
music_status = true;
audio_choose(music_num);
audio_play();
eeprom_WRITE();
}
else if (results.value == 0xFFE01F)//上一曲
{
music_num--; //歌曲序号减1
if (music_num < 1) //限制歌曲序号范围,如果歌曲序号小于1
{
music_num = music_num_MAX; //歌曲序号为最大(9)
}
music_status = true;
audio_choose(music_num); //音频选择歌曲序号
audio_play(); //音频工作
eeprom_WRITE();
}
else if (results.value == 0xFF02FD)//音量加
{
music_vol++; //音量+1
if (music_vol > 30) music_vol = 1; //若音量大于30,则音量为3
audio_vol(music_vol);
music_status = true;
eeprom_WRITE();
}
else if (results.value == 0xFF9867)//音量减
{
music_vol--; //音量减1
if (music_vol < 1) music_vol = 30; //如果音量小于1,音量为30
audio_vol(music_vol);
music_status = true;
eeprom_WRITE();
}
}
else
results.value = 0;
int uiStep() //切歌
{
if (analogRead(A0) < 100) //Y-up
{
delay(50); //延迟50毫秒输出
if (analogRead(A0) < 100) //
return 1; //回到动作1
}
if (analogRead(A1) < 100) //
{
delay(50); //延迟50毫秒输出
if (analogRead(A1) < 100) //X-Right
return 2; //回到动作2
}
if (analogRead(A1) > 900) //X-Left
{
delay(50); //延迟50毫秒输出
if (analogRead(A1) > 900) //
return 3; //回到动作3
}
return 0;
}
//主界面,可自由定义
void draw()
{
setFont_L;
u8g.setPrintPos(4, 16);
u8g.print("Music_sta:");
u8g.print(music_status ? "play" : "pause");
u8g.setPrintPos(4, 16 * 2);
u8g.print("Music_vol:");
u8g.print(music_vol);
u8g.print("/30");
u8g.setPrintPos(4, 16 * 3);
u8g.print("Music_num:");
u8g.print(music_num);
u8g.print("/");
u8g.print(music_num_MAX);
u8g.setPrintPos(4, 16 * 4);
u8g.print("....Microduino....");
//u8g.print(rtc.formatTime(RTCC_TIME_HMS));
}
搭建硬件
如何操作你可以通过点按遥控器的相应按钮控制音乐盒的歌曲切换以及音量。 你也可以通过Joystick对音乐盒进行控制,方法如下。 也可以选择Duo-V进行堆叠,这样OLED就不需要连接在Hub上,整个应用的高度也会降低。 结果通过红外遥控器或Joystick摇杆来控制音乐的播放、暂停与切歌。你也可以通过乐高搭建一个漂亮的外观。 视频 |