arduino esp32 使用 BY8002 mp3模块,案例:用摇杆控制的MP3播放器

一、BY8002 mp3模块图片

在这里插入图片描述

二、简单测试

简单连接:

arduino-----------------BY8002
5v----------------------------8-VCC
GND------------------------14-GND
BY8002 PIN6,PIN7(spk1,spk2)--------->小喇叭(不分正反)
TF卡存好歌曲,歌曲命名为四位数字,如:0001.mp3 , 0002.mp3
将IO1接地会自动播放0001.mp3 ,IO2接地会自动播放0002.mp3 。

三、连接arduino

在这里插入图片描述
arduino----------------->BY8002
5v----------------------------8-VCC
GND------------------------14-GND
2RX(软串口)----------------3TX
3TX(软串口)----------------2RX

BY8002 PIN6,PIN7(spk1,spk2)--------->小喇叭(不分正反)
插入TF卡,歌曲命名为四位数字,如:0001.mp3 , 0002.mp3

注意:如果有杂音(哒哒哒的声音),建议按下图接一个1K的电阻。

在这里插入图片描述

四、arduino 串口指令播放(具体指令见后面厂商文档)。

#include <SoftwareSerial.h> // 引入软串口SoftwareSerial库  
byte next[]={0x7e,0x03,0x03,0x00,0xef};//下一曲
byte last[]={0x7e,0x03,0x04,0x07,0xef};//上一曲
byte play[]={0x7e,0x03,0x01,0x02,0xef};//播放
byte vmines[]={0x7e,0x03,0x06,0x05,0xef};//音量减(发送一次减少一个级别,共0-30)
byte vplus[]={0x7e,0x03,0x05,0x06,0xef};//音量加(发送一次增加一个级别,共0-30)
byte vlume20[]={0x7e,0x04,0x31,0x14,0x21,0xef};//设置音量为20
byte vlume30[]={0x7e,0x04,0x31,0x1e,0x2b,0xef};//设置音量为30
SoftwareSerial Serial2(2, 3);//RX,TX设置软串口
void setup() {
  // put your setup code here, to run once:
  Serial2.begin(9600);//波特率
  //Serial2.write(vmines,5);
  Serial2.write(vlume20,6);//设置音量为20
  //Serial2.write(pl,5);
  delay(100);//必须要有延迟,以便于指令生效
  Serial2.write(next,5);//播放下一曲
}
void loop() {
}

五、案例:用摇杆控制的MP3播放器

在这里插入图片描述
下面展示一些 内联代码片


/*
arduino 摇杆控制 MP3模块,播放音乐
原创:详细案例文档 csdn
厂商模块说明:http://www.balway.com/showproduct.asp?pid=80&type=3

广州 南沙  2023-11-21  农历十月初九

*/
#include <SoftwareSerial.h>                               // 引入软串口SoftwareSerial库
byte next[] = { 0x7e, 0x03, 0x03, 0x00, 0xef };           //下一曲
byte last[] = { 0x7e, 0x03, 0x04, 0x07, 0xef };           //上一曲
byte play[] = { 0x7e, 0x03, 0x01, 0x02, 0xef };           //播放
byte pause[] = { 0x7e, 0x03, 0x02, 0x01, 0xef };          //暂停
byte vmines[] = { 0x7e, 0x03, 0x06, 0x05, 0xef };         //音量减(发送一次减少一个级别,共0-30)
byte vplus[] = { 0x7e, 0x03, 0x05, 0x06, 0xef };          //音量加(发送一次增加一个级别,共0-30)
byte vlume20[] = { 0x7e, 0x04, 0x31, 0x14, 0x21, 0xef };  //设置音量为20的串口指令
byte vlume30[] = { 0x7e, 0x04, 0x31, 0x1e, 0x2b, 0xef };  //设置音量为30的串口指令


SoftwareSerial Serial2(2, 3);  //RX,TX设置软串口,用于串口指令控制MP3模块

int xValue = 500; //摇杆X初始值
int yValue = 500;//摇杆Y初始值
bool State = false;//当前播放状态记录
void setup() {
  // put your setup code here, to run once:
  Serial2.begin(9600);  //用于发送给MP3模块的波特率初始化
  Serial.begin(9600);  //用于电脑串口监视器的波特率初始化
  Serial2.write(vlume20, 6);  //设置音量为20
  delay(100);              //必须要有延迟,以便于指令生效
  Serial2.write(next, 5);  //播放下一曲

  pinMode(4, INPUT_PULLUP);  //摇杆的按键在4号接口,初始化针脚上拉,不上拉非常不稳定。
}

void loop() {
  xValue = analogRead(A0);//获取摇杆的x值,连接在主板A0接口
  yValue = analogRead(A1);//获取摇杆的y值,连接在主板A1接口
  Serial.println(digitalRead(4));//发送按键


  if (digitalRead(4) == LOW) {  // 如果按键被按下
    delay(500);
    //Serial2.write(pause, 5);


//这一块代码是实现按一下按键播放,再按一下按键暂停
    if (State == false) {      // 如果之前是false状态
      Serial2.write(play, 5);  // 播放
      //delay(50);
      State = true;  // 记录状态为true
    } else {
      Serial2.write(pause, 5);  // 暂停
      //delay(50);
      State = false;  // 记录状态为false
    }
  }


//摇杆向右,播放上一曲
  if (xValue < 100) {
    delay(500);
    Serial2.write(last, 5);
  }

//摇杆向左,播放下一曲
  if (xValue > 900) {
    delay(500);
    Serial2.write(next, 5);
  }

//摇杆向上,增加1级音量
  if (yValue < 100) {
    delay(500);
    Serial2.write(vplus, 5);
  }

//摇杆向下,减小1级音量
  if (yValue > 900) {
    delay(500);
    Serial2.write(vmines, 5);
  }
}

六、厂商文档

参考:http://www.balway.com/showproduct.asp?pid=80&type=3
以下是截图:
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值