我是靠谱客的博主 美丽楼房,这篇文章主要介绍基于Arduino的红外感应音响(MP3-TF-16P模块的使用)系列文章目录前言一、需要的模块二、模块介绍总结,现在分享给大家,希望可以做个参考。

系列文章目录

音质还不错

红外感应音响

文章目录

  • 系列文章目录
  • 前言
  • 一、需要的模块
  • 二、模块介绍
    • 1.MP3-TF-16P
    • 2.代码及效果
  • 总结


前言

在这之前就学习过MP3-TF-16P,这次回到家看到了好多年前买手机送的大礼包,里面有个音响,看外形好高级,里面就是个1块钱的喇叭。正好这几天学操作系统有点无聊,于是想着动手做一个红外感应音响。
在这里插入图片描述
是不是很劣质,不过嘛,在我的手上他又重新焕发活力,直到我做出来听到了它的音质,才发现是我格局小了,和1块钱的喇叭就是不一样。

一、需要的模块

Arduino开发板一个
miniMP3传感器一个
喇叭一个
红外3个
TF卡一个
功能介绍:可以通过红外传感器控制音乐的播放,切换与暂停

二、模块介绍

1.MP3-TF-16P

原理就不多介绍了,先来看它的函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<DFRobotDFPlayerMini>库的控制语句汇总 myDFPlayer.start(); //播放mp3 myDFPlayer.pause(); //暂停mp3 myDFPlayer.next(); //播放下一个mp3 myDFPlayer.enableLoop(); //启用循环 myDFPlayer.disableLoop(); //禁用循环 myDFPlayer.stopAdvertise(); //停止做广告 mp3Player.volume(10); //音量为10(0-30) myDFPlayer.previous(); //播放上一个的mp3 myDFPlayer.randomAll(); //随机播放所有mp3 myDFPlayer.enableLoopAll(); //循环所有mp3文件 myDFPlayer.disableLoopAll(); //停止循环所有mp3文件 myDFPlayer.play(1); //播放文件夹里名为0001.mp3的音乐 myDFPlayer.loop(1); //循环文件夹里名为0001.mp3的音乐 myDFPlayer.loopFolder(1); //循环文件夹SD:/ 01中的所有mp3文件 myDFPlayer.advertise(3); //在SD中宣传特定的mp3广告:/ADVERT/0003.mp3;文件名(0~65535) myDFPlayer.playFolder(15, 4); //在SD中播放特定的mp3:/ 15/004.mp3;文件夹名称(1~99);文件名(1~255) myDFPlayer.playLargeFolder(2, 999); //在SD中播放特定的mp3:/ 02/004.mp3;文件夹名称(1~10);文件名(1~1000) myDFPlayer.volumeUp() //音量+ myDFPlayer.volumeDown() //音量- myDFPlayer.EQ(0) // 指定 EQ 0/1/2/3/4/5 myDFPlayer.loop(3) //单曲循环指定曲目播放 0-2999 myDFPlayer.outputDevice(2)//指定播放设1/2/3/4/5 myDFPlayer.sleep() //进入睡眠 -- 低功耗 myDFPlayer.reset() //模块复位 myDFPlayer.playFolder(1,1) //指定文件夹播放 1-10 前面为文件夹,后面为文件夹中的文件名

接下来看他的接线
在这里插入图片描述
在这里插入图片描述
电阻可接可不接,都能播放,看网上说加上电阻音质会变好,并没有感觉。

注意事项:

1、所有音乐档案一定要放在/mp3 文件夹下

2、音乐命名一定要符合规则,例如0001.mp3, 0002.mp3
在这里插入图片描述

2.代码及效果

先上效果图
在这里插入图片描述
代码里的东西比较多,这里也直接附上了。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" int buttonPin=2,buttonPin1=3,buttonPin2=4,buttonPin3=5,buttonPin4=6,buttonPin5=7,HW1=8,HW2=9,HW3=12; SoftwareSerial mySoftwareSerial(10,11); // RX, TX DFRobotDFPlayerMini myDFPlayer; int a=0; int k=15; int val,val1,val2; char serialData; void printDetail(uint8_t type, int value); void setup() { mySoftwareSerial.begin(9600); Serial.begin(9600); // pinMode(9, OUTPUT); //pinMode(8, INPUT); pinMode(buttonPin, INPUT_PULLUP); //设置按键管脚上拉输入模式 pinMode(buttonPin1, INPUT_PULLUP); //设置按键管脚上拉输入模式 pinMode(buttonPin2, INPUT_PULLUP); //设置按键管脚上拉输入模式 pinMode(buttonPin3, INPUT_PULLUP); //设置按键管脚上拉输入模式 pinMode(buttonPin4, INPUT_PULLUP); //设置按键管脚上拉输入模式 pinMode(buttonPin5, INPUT_PULLUP); //设置按键管脚上拉输入模式 Serial.println(); Serial.println(F("DFRobot DFPlayer Mini Demo")); Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. Serial.println(F("Unable to begin:")); Serial.println(F("1.Please recheck the connection!")); Serial.println(F("2.Please insert the SD card!")); // while(true){ // delay(0); // Code to compatible with ESP8266 watch dog. // } } Serial.println(F("DFPlayer Mini online.")); //myDFPlayer.start(); myDFPlayer.volume(k); } void loop() { while(1) { val=digitalRead(HW1); val1=digitalRead(HW2); val2=digitalRead(HW3); Serial.println(val); Serial.println(val1); Serial.println(val2); if(val==0) myDFPlayer.start(); if(val1==0) myDFPlayer.next(); if(val2==0) myDFPlayer.previous(); myDFPlayer.volume(k); //Set volume value. From 0 to 30 if(digitalRead(buttonPin4) == LOW) { // 若按键s3被按下 delay(80); //等待跳过按键抖动的不稳定过程 if (digitalRead(buttonPin4) == LOW) // 若按键s3被按下 { k++; } } if(digitalRead(buttonPin5) == LOW) { // 若按键s3被按下 delay(80); //等待跳过按键抖动的不稳定过程 if (digitalRead(buttonPin5) == LOW) // 若按键s3被按下 { k--; } } if(digitalRead(buttonPin) == LOW) { // 若按键s3被按下 delay(80); //等待跳过按键抖动的不稳定过程 if (digitalRead(buttonPin) == LOW) // 若按键s3被按下 { digitalWrite(8, HIGH); myDFPlayer.next(); //Play next mp3 every 3 second. digitalWrite(9, LOW); } } if(digitalRead(buttonPin1) == LOW) { // 若按键s3被按下 delay(80); //等待跳过按键抖动的不稳定过程 if (digitalRead(buttonPin1) == LOW) // 若按键s3被按下 { digitalWrite(8, HIGH); myDFPlayer.start(); digitalWrite(9, LOW); } } if(digitalRead(buttonPin2) == LOW) { // 若按键s3被按下 delay(80); //等待跳过按键抖动的不稳定过程 if (digitalRead(buttonPin2) == LOW) // 若按键s3被按下 { digitalWrite(8, HIGH); digitalWrite(9, LOW); myDFPlayer.previous(); //Play the first mp3 } } if(digitalRead(buttonPin3) == LOW) { // 若按键s3被按下 delay(80); //等待跳过按键抖动的不稳定过程 if (digitalRead(buttonPin3) == LOW) // 若按键s3被按下 { digitalWrite(8, LOW); myDFPlayer.pause(); //Play the first mp3 digitalWrite(9, HIGH); } } if( Serial.available()>0 ){ serialData = Serial.read(); if (serialData == '1' ) { //接收到点亮LED指令 Serial.print("Got command: "); Serial.println(serialData); Serial.println("LED-ON"); digitalWrite(8, HIGH); myDFPlayer.start(); digitalWrite(9, LOW); } if (serialData == '2' ) { //接收到点亮LED指令 Serial.print("Got command: "); Serial.println(serialData); Serial.println("LED-ON"); digitalWrite(8, HIGH); digitalWrite(9, LOW); myDFPlayer.previous(); //Play the first mp3 } if (serialData == '3' ) { //接收到点亮LED指令 Serial.print("Got command: "); Serial.println(serialData); Serial.println("LED-ON"); digitalWrite(8, HIGH); digitalWrite(9, LOW); myDFPlayer.previous(); //Play the first mp3 } if (serialData == '4' ) { //接收到点亮LED指令 Serial.print("Got command: "); Serial.println(serialData); Serial.println("LED-ON"); digitalWrite(8, LOW); myDFPlayer.pause(); //Play the first mp3 digitalWrite(9, HIGH); } if (serialData == '5' ) { //接收到点亮LED指令 k++; } if (serialData == '6' ) { //接收到点亮LED指令 k--; } } } } /* if (millis() - timer > 60000) { timer = millis(); myDFPlayer.next(); //Play next mp3 every 3 second. Serial.println(F("Playing Next one")); }*/

总结

今天的学习生活就到此结束了,明天继续FreeRTOS操作系统,加油!

最后

以上就是美丽楼房最近收集整理的关于基于Arduino的红外感应音响(MP3-TF-16P模块的使用)系列文章目录前言一、需要的模块二、模块介绍总结的全部内容,更多相关基于Arduino内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部