“音乐播放”的版本间的差异

来自Labplus盛思维基百科
跳转至: 导航搜索
(创建页面,内容为“=== Arduino示例 === <pre style="color:blue"> #include <SoftwareSerial.h> #include "kt540b.h" uint8_t inBuff[3] = { 0 }; uint8_t inByte; Kt540bClass mp3Play(5, 6);…”)
 
使用教程
 
(未显示2个用户的19个中间版本)
第1行: 第1行:
=== Arduino示例 ===
+
[[文件:黑色传感器最终版12.20-24.png|350px|缩略图|右]]
 +
== 概述 ==
 +
MP3播放模块,可通过软串口发送指令操控播放TF卡中保存的歌曲
 +
 
 +
== 技术参数 ==
 +
* 工作电压: VCC 3.3V -5V
 +
* 串口通信
 +
* 采用TF卡存储歌曲或语音信息
 +
* 输出功率3W
 +
* 板载双声道功放,可驱动0.5W喇叭
 +
* 模块尺寸:24x46x7.5mm
 +
 
 +
== 引脚定义 ==
 +
{| class="wikitable"
 +
|-
 +
| <small>VCC</small> || <small>电源</small>
 +
|-
 +
| <small>RXI</small> || <small>串口接收</small>
 +
|-
 +
| <small>TXD</small> || <small>串口发送</small>
 +
|-
 +
| <small>GND</small> || <small>地</small>
 +
|}
 +
 
 +
== 使用教程 ==
 +
:{|style="background-color:#FCF8E3;color:#8A6D3B;"
 +
|-
 +
|style="padding: 2px;"| [[File:warning_yellow.png|25px|center]] ||'''注意'''
 +
|
 +
|}
 +
# 串口设置波特率9600bps,bluebit串口tx引脚连接音乐模块的RXI引脚
 +
# 由于音乐模块带喇叭功放,功率较大,bluebit主板需要采用锂电池供电方式
 +
 
 +
===<small>MP3库API</small> ===
 +
MP3驱动使用SoftwareSerial,可自定义串口引脚<br />
 +
[http://wiki.labplus.cn/images/2/27/Mp3_KT540BPrj.zip MP3_SoftSerial驱动下载]
 
<pre style="color:blue">
 
<pre style="color:blue">
#include <SoftwareSerial.h>
+
        Kt540bClass(int rxPin, int txPin);    // 定义软串口引脚
 +
void begin();
 +
void play(void);    //播放(比如从暂停中恢复)
 +
void play(uint8_t songNum);  //播放指定序号歌曲
 +
void playDir(uint8_t dir, uint8_t songNum); //播放指定文件夹指定歌曲
 +
void playNext(void);    //播下一首
 +
void playPrev(void);    //播上一首
 +
void setVolume(uint8_t volume);  //设置音量
 +
void volumeInc();      //音量+
 +
void volumeDec();      //音量-
 +
void setEQ(uint8_t eq);                  //设置EQ值
 +
void loop(uint8_t songNo);              //指定根文件夹下相关序号歌曲循环播放
 +
void loop(uint8_t dir, uint8_t songNo);  //指定目录相关序号歌曲循环播放
 +
void loopDir(uint8_t dir);              //指定目录循环播放
 +
void singleLoop(boolean onOff);        //单曲循环开关
 +
void radomPlay(void);  //随机播放(整个设备上的歌)
 +
void pause(void);  //暂停
 +
void stop(void);    //停止
 +
void setDac(bool onOff);  //DAC开关
 +
void enterSleep(void);    //进入睡眠__bool_true_false_are_defined
 +
void exitSleep(void);    //退出睡眠
 +
void resetDevice(void);  //设备复位
 +
void setPlayMedia(MEDIA playMedia);  //选择播入媒体
 +
uint8_t getPlayState(void); //获取播放状态
 +
</pre>
 +
=== <font size="3">掌控板</font> ===
 +
{|
 +
|-
 +
| [[文件:MP3.png |900px|居中|无框]]
 +
|}
 +
 
 +
=== <small>Arduino示例</small> ===
 +
[[文件:Uno mp3.jpg|700px|无框|居中]]
 +
<pre style="color:blue">
 +
 
 
#include "kt540b.h"
 
#include "kt540b.h"
  
uint8_t inBuff[3] = { 0 };
+
Kt540bClass mp3Play(5,6);   //实例化对象,定义pin5为RX,pin6为TX
uint8_t inByte;
 
Kt540bClass mp3Play(5, 6);
 
  
  
 
void setup()
 
void setup()
 
{
 
{
  Serial.begin(115200);
+
mp3Play.begin();       //mp3初始化开始
  mp3Play.begin();
+
mp3Play.setVolume(50);   //音量设置
  mp3Play.setVolume(50);
+
     mp3Play.play(1);         //播放第1首歌曲
     mp3Play.play(1);
+
delay(10000);            //等待,让其播放10秒
 
 
 
}
 
}
  
 
void loop()
 
void loop()
 
{
 
{
  for (uint8_t i = 0; i < 3; i++)
+
mp3Play.pause();         //歌曲暂停
    inBuff[i] = 0;
+
mp3Play.playNext();       //播放下首歌曲
 +
delay(10000);     //等待,让其播放10秒
 +
mp3Play.stop();         //停止播放歌曲
  
  while(Serial.available())
+
}
  {
+
 
     inByte = Serial.read();
+
</pre>
     delay(2);
+
=== <small>MicroPython示例</small> ===
     if (inByte == 0xff)
+
<pre style="color:blue">
     {
+
from microbit import *
      inBuff[0] = inByte;
+
 
      Serial.readBytes(&inBuff[1], 2);
+
def MP3CmdWrite(cmd):
     }
+
    sum = 0
 +
    for i in range(0,6):
 +
        sum += cmd[i]
 +
sum1 = ((0xFFFF - sum) + 1)
 +
    sum_l = sum1 & 0xff
 +
     sum_h = sum1 >> 8
 +
 +
    uart.write(bytearray([0x7E]))
 +
     uart.write(cmd)
 +
     uart.write(bytearray([sum_h]))
 +
     uart.write(bytearray([sum_l]))
 +
    uart.write(bytearray([0xEF]))
 +
     sleep(20)
  
     //for (uint8_t i = 0; i < 3; i++)
+
def MP3Play(num):
 +
     var = bytearray([0xFF,0x06,0x03,0x01,0x00,num])
 +
    MP3CmdWrite(var)
  
    //{
+
def MP3Stop():
    //  Serial.write(inBuff[i]);
+
     var = bytearray([0xFF ,0x06 ,0x0E ,0x01 ,0x00 ,0x00])
     //}
+
     MP3CmdWrite(var)
    if (inBuff[1] == 0x01)  // 播放指定歌曲
 
    {
 
      mp3Play.play(inBuff[2]);
 
     }
 
    if (inBuff[1] == 0x02)   // 播放上下首
 
    {
 
      switch (inBuff[2])
 
      {
 
      case 0x01:
 
        mp3Play.playNext(); 
 
        break;
 
      case 0x02:
 
        mp3Play.playPrev();
 
        break;
 
      default:
 
        break;
 
      }
 
    }
 
  
    if (inBuff[1] == 0x03)   // 设置音量大小
+
def MP3Start():
     {
+
     var = bytearray([0xFF ,0x06 ,0x0D ,0x01 ,0x00 ,0x00])
      mp3Play.setVolume(inBuff[2]);
+
     MP3CmdWrite(var)
     }
 
  
    if (inBuff[1] == 0x04)   // 音量增加减
+
def MP3StopDecode():
     {
+
     var = bytearray([0xff,0x06,0x16,0x00,0x00,0x00])
      switch (inBuff[2])
+
    MP3CmdWrite(var)  
      {
 
      case 0x01:
 
        mp3Play.volumeInc();
 
        break;
 
      case 0x02:
 
        mp3Play.volumeDec();
 
        break;
 
      default:
 
        break;
 
      }
 
    }
 
  
    if (inBuff[1] == 0x05)   // 暂停、停止播放
+
def MP3VolumeInc():
     {
+
     var = bytearray([0xFF,0x06,0x04,0x00,0x00,0x00])
      switch (inBuff[2])
+
    MP3CmdWrite(var)  
      {
 
      case 0x01:
 
        mp3Play.pause();  //暂停
 
        break;
 
      case 0x02:
 
        mp3Play.play();  //恢复播放
 
        break;
 
      case 0x03:
 
        mp3Play.stop();  //停止播放
 
        break;
 
      default:
 
        break;
 
      }
 
    } 
 
  }
 
}
 
  
 +
def MP3VolumeDec():
 +
    var = bytearray([0xFF,0x06,0x05,0x00,0x00,0x01])
 +
    MP3CmdWrite(var)
 +
   
 +
def MP3Volume(vol):
 +
    var = bytearray([0xFF,0x06,0x06,0x00,0x00,vol])
 +
    MP3CmdWrite(var)
 +
   
 +
def MP3Reset():
 +
    var = bytearray([0xFF,0x06,0x0C,0x00,0x00,0x00])
 +
    MP3CmdWrite(var)
 +
 
 +
uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin1, rx=pin0)      #设置串口引脚和波特率
 +
MP3Volume(28)          #音量, 0-30       
 +
sleep(1000)
 +
MP3Play(1)              #播放第1首歌曲
 
</pre>
 
</pre>
 +
 +
=== <small>图形化示例</small> ===
 +
{|
 +
|-
 +
| [[文件:音乐播放 example.png|300px|无框|左]]
 +
|}
 +
 +
== 版本历史记录 ==
 +
{|  border="1" cellspacing="0" align="left" cellpadding="0" width="60%" style="text-align:center;"
 +
|- style="text-align:center;background-color:#6fa8dc;color:#fffff;"
 +
!width="10%"|Version !!width="15%"| Date !! Note  <small>[+]新增[-]删除[^]修复</small>
 +
|-
 +
| V2.0 || || style="text-align:left"|
 +
|}

2020年6月30日 (二) 16:53的最新版本

黑色传感器最终版12.20-24.png

概述

MP3播放模块,可通过软串口发送指令操控播放TF卡中保存的歌曲

技术参数

  • 工作电压: VCC 3.3V -5V
  • 串口通信
  • 采用TF卡存储歌曲或语音信息
  • 输出功率3W
  • 板载双声道功放,可驱动0.5W喇叭
  • 模块尺寸:24x46x7.5mm

引脚定义

VCC 电源
RXI 串口接收
TXD 串口发送
GND

使用教程

Warning yellow.png
注意
  1. 串口设置波特率9600bps,bluebit串口tx引脚连接音乐模块的RXI引脚
  2. 由于音乐模块带喇叭功放,功率较大,bluebit主板需要采用锂电池供电方式

MP3库API

MP3驱动使用SoftwareSerial,可自定义串口引脚
MP3_SoftSerial驱动下载

        Kt540bClass(int rxPin, int txPin);     // 定义软串口引脚
	void begin();
	void play(void);     //播放(比如从暂停中恢复)
	void play(uint8_t songNum);   //播放指定序号歌曲 
	void playDir(uint8_t dir, uint8_t songNum); //播放指定文件夹指定歌曲
	void playNext(void);    //播下一首
	void playPrev(void);    //播上一首
	void setVolume(uint8_t volume);  //设置音量
	void volumeInc();       //音量+
	void volumeDec();       //音量-
	void setEQ(uint8_t eq);                  //设置EQ值
	void loop(uint8_t songNo);               //指定根文件夹下相关序号歌曲循环播放
	void loop(uint8_t dir, uint8_t songNo);  //指定目录相关序号歌曲循环播放
	void loopDir(uint8_t dir);               //指定目录循环播放
	void singleLoop(boolean onOff);         //单曲循环开关
	void radomPlay(void);  //随机播放(整个设备上的歌)
	void pause(void);   //暂停
	void stop(void);    //停止
	void setDac(bool onOff);  //DAC开关
	void enterSleep(void);    //进入睡眠__bool_true_false_are_defined
	void exitSleep(void);    //退出睡眠
	void resetDevice(void);  //设备复位
	void setPlayMedia(MEDIA playMedia);  //选择播入媒体
	uint8_t getPlayState(void); //获取播放状态

掌控板

MP3.png

Arduino示例

Uno mp3.jpg

#include "kt540b.h"

Kt540bClass mp3Play(5,6);    //实例化对象,定义pin5为RX,pin6为TX


void setup()
{
	mp3Play.begin();        //mp3初始化开始
	mp3Play.setVolume(50);   //音量设置
    mp3Play.play(1);         //播放第1首歌曲
	delay(10000);            //等待,让其播放10秒
}

void loop()
{
	mp3Play.pause();         //歌曲暂停
	mp3Play.playNext();       //播放下首歌曲
	delay(10000);		     //等待,让其播放10秒
	mp3Play.stop();         //停止播放歌曲

}

MicroPython示例

from microbit import *

def MP3CmdWrite(cmd):
    sum = 0
    for i in range(0,6):
        sum += cmd[i]
	sum1 = ((0xFFFF - sum) + 1)
    sum_l = sum1 & 0xff
    sum_h = sum1 >> 8
	
    uart.write(bytearray([0x7E]))
    uart.write(cmd)
    uart.write(bytearray([sum_h]))
    uart.write(bytearray([sum_l]))
    uart.write(bytearray([0xEF]))
    sleep(20)

def MP3Play(num):
    var = bytearray([0xFF,0x06,0x03,0x01,0x00,num])
    MP3CmdWrite(var)

def MP3Stop():
    var = bytearray([0xFF ,0x06 ,0x0E ,0x01 ,0x00 ,0x00])
    MP3CmdWrite(var)

def MP3Start():
    var = bytearray([0xFF ,0x06 ,0x0D ,0x01 ,0x00 ,0x00])
    MP3CmdWrite(var)

def MP3StopDecode():
    var = bytearray([0xff,0x06,0x16,0x00,0x00,0x00])
    MP3CmdWrite(var)    

def MP3VolumeInc():
    var = bytearray([0xFF,0x06,0x04,0x00,0x00,0x00])
    MP3CmdWrite(var) 

def MP3VolumeDec():
    var = bytearray([0xFF,0x06,0x05,0x00,0x00,0x01])
    MP3CmdWrite(var) 
    
def MP3Volume(vol):
    var = bytearray([0xFF,0x06,0x06,0x00,0x00,vol])
    MP3CmdWrite(var) 
    
def MP3Reset():
    var = bytearray([0xFF,0x06,0x0C,0x00,0x00,0x00])
    MP3CmdWrite(var) 
   
uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin1, rx=pin0)      #设置串口引脚和波特率
MP3Volume(28)           #音量, 0-30         
sleep(1000)
MP3Play(1)              #播放第1首歌曲

图形化示例

音乐播放 example.png

版本历史记录

Version Date Note [+]新增[-]删除[^]修复
V2.0