色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項目 > 炫酷音樂播放器作品

炫酷音樂播放器作品

RT-Thread Studio IDE 設置AB32VG1支持的相關組件包,實現對TF卡里的指定文件夾的文件遍歷,并播放選中的.wav文件,彩燈根據播放狀態不同的顯示不同的顏色!項目用到的硬件有AB32VG1 的2.0版的開發板,TF卡,美標3.5mm耳機

磐石11 磐石11

分享
3 喜歡這個項目
團隊介紹

磐石11 磐石11

團隊成員

磐石11 工程師

分享
項目簡介
RT-Thread Studio IDE 設置AB32VG1支持的相關組件包,實現對TF卡里的指定文件夾的文件遍歷,并播放選中的.wav文件,彩燈根據播放狀態不同的顯示不同的顏色!項目用到的硬件有AB32VG1 的2.0版的開發板,TF卡,美標3.5mm耳機
硬件說明

申請到是AB32VG1的2.0的開發板!

image.png

因用到彩燈需短接J8,J10,J12,TF卡需短接P2的對應pin,

軟件說明

應用RT-Thread Studio IDE,可快速實現對組件包的配置!

image.png

軟件實現

led 彩燈的線程如下:

static void led_thread_entry(void* p)
{
uint32_t cnt = 0;
uint8_t pin = rt_pin_get("PE.1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
uint8_t pin1 = rt_pin_get("PE.4");
rt_pin_mode(pin1, PIN_MODE_OUTPUT);
uint8_t pin2 = rt_pin_get("PA.1");
rt_pin_mode(pin2, PIN_MODE_OUTPUT);

while (1)
{ rt_err_t result = rt_mutex_take(mutex1, 6);
if (result == RT_EOK) {
state = wavplayer_state_get();
rt_mutex_release(mutex1);
if (state== PLAYER_STATE_PLAYING) {
if (cnt % 8 == 0)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 1)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 2)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 3)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 4)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 5)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 6)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 7)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
}
cnt++;
}else if (state== PLAYER_STATE_PAUSED) {
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
rt_thread_mdelay(400);
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
rt_thread_mdelay(200);
}
else {
rt_pin_write(pin, PIN_LOW);
rt_thread_mdelay(500);
rt_pin_write(pin, PIN_HIGH);
rt_thread_mdelay(500);
}
rt_thread_mdelay(200);
}

}

}
音樂播放控制用到了兩個線程。一個通過按鈕事件線程控制音樂播放!一個通過音樂播放狀態來檢測是否切換歌曲,避免播放一首之后,因無按鈕操作而停止!

按鈕事件線程:

static void btn_thread_entry(void* p)
{
while (1)
{
rt_thread_delay(RT_TICK_PER_SECOND / 500);
rt_err_t result = rt_mutex_take(mutex1, 6);
if (result == RT_EOK) {
button_ticks();
rt_mutex_release(mutex1);
}
}
}

音樂播放狀態來檢測線程:

static void endCheck_thread_entry(void* p)
{
while (1)
{
rt_thread_mdelay(2500);
rt_err_t result = rt_mutex_take(mutex1, 2);
if (result == RT_EOK) {
state = wavplayer_state_get();
rt_mutex_release(mutex1);
if (state == PLAYER_STATE_STOPED) {
EndState = 0;
rt_thread_mdelay(1000);
result = rt_mutex_take(mutex1, 2);
if (result == RT_EOK) {
state = wavplayer_state_get();
if ((state == PLAYER_STATE_STOPED)&& (EndState == 0)) {
EndState = 1;
if (currentSong == NUM_OF_SONGS) {
currentSong = 0;
}
GetCurrentPath();
wavplayer_play(table);
currentSong++;
}
rt_mutex_release(mutex1);}
}

}
}
}

具體情況請參考源碼

演示效果
附件

(8.44 MB)下載

評論區(2 )
  • 磐石11: 加油

    回復

  • jf_61952251: 厲害

    回復

主站蜘蛛池模板: 亚洲一区二区三不卡高清 | 国产一级做a爰片久久毛片男 | 免费国产综合视频在线看 | 亚洲中文字幕在线第六区 | 国产 亚洲 中文在线 字幕 | 黄瓜视频苹果直接安装 | 亚洲午夜久久影院 | 在教室伦流澡到高潮HNP视频 | 成年女人色毛片免费 | 亚洲精品久久久久一区二区三 | 亚洲午夜性春猛交XXXX | 久久久久毛片免费观看 | 免费在线伦理片 | 啊灬啊别停灬用力啊在线观看视频 | 最新精品学生国产自在现拍 | 国产亚洲欧美在线中文BT天堂网 | 婷婷综合久久狠狠色 | 牢记永久免费网址 | 中文字幕本庄优花喂奶 | 果冻传媒在线观看网站 | 99热久久爱五月天婷婷 | 翁公与小莹在客厅激情 | 色欲国产麻豆精品AV免费 | 久久这里只精品热在线99 | 97免费视频在线观看 | 国产午夜亚洲精品一区 | 99国内精精品久久久久久婷婷 | 伦理在线影院伦理电影 | 老司机亚洲精品影院在线观看 | 轻点灬大ji巴太粗太双性高h | 伊人精品久久久大香线蕉99 | 久久婷婷五月免费综合色啪 | 中文字幕一区二区三区在线观看 | 99精品在线免费 | 国产精品一区二区亚瑟不卡 | md2.pud 麻豆传媒官网 | 国产精品av| 美女张开腿让我了一夜 | 亚洲成人免费在线 | 国产欧美无码亚洲毛片 | 久久99re66热这里只有精品 |