Hi,long time nosee!今天给小伙伴们带来一个真正可以提升逼格的教程,手势控制音乐!
需要用到的配件:
ITEAD的这个MP3音乐扩展板可以播放内存卡或者U盘里面的MP3音乐文件,输出是标准的耳机接口,可以接耳机、音响(额外供电)等。详细资料和库下载:http://pan.baidu.com/s/1eQnFEqI
实物硬件连接如下:
MP3音乐扩展板直接叠加到UNO,HC-SR04的接线如下图:
烧写以下代码到UNO: - const int EchoPin = 2; //超声波信号输入
- const int TrigPin = 3; //超声波控制信号输出
- int currDist = 0;
- void setup(){
- pinMode(EchoPin, INPUT);
- for (int pinindex = 3; pinindex < 8; pinindex++) {
- pinMode(pinindex, OUTPUT); // set pins 3 to 10 as outputs
- }
- pinMode(A0,OUTPUT);
- pinMode(A1,OUTPUT);
- pinMode(A2,OUTPUT);
- pinMode(A3,OUTPUT);
- digitalWrite(A0,LOW);
- digitalWrite(A1,LOW);
- digitalWrite(A2,LOW);
- digitalWrite(A3,LOW);
- Serial.begin(9600);
- }
- void loop(){
- currDist = MeasuringDistance(); //读取前端距离
- //Serial.println(currDist);
- if(currDist > 25){
-
- }
- //power开关看个人需要,这里没有启用
- //else if(currDist < 8){
-
- // mpower();
- // }
- else if(currDist < 7){
-
- mpause();
- }
- else if(currDist < 15){
-
- mnext();
-
- }
- else if(currDist < 25){
-
- mprev();
-
- }
-
-
- }
- long MeasuringDistance() {
- long duration;
-
- digitalWrite(TrigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(TrigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(TrigPin, LOW);
-
-
- duration = pulseIn(EchoPin, HIGH);
-
- return duration / 29 / 2;
- }
- //mplay播放
- void mplay() {
- digitalWrite(A0, HIGH);
- delay(100);
- digitalWrite(A0, LOW);
- Serial.println("mplay");
- }
-
- //mprev上一首
- void mprev() {
- digitalWrite(A1, HIGH);
- delay(1000);
- digitalWrite(A1, LOW);
- Serial.println("mprev");
- }
- //mnext下一首
- void mnext() {
- digitalWrite(A2, HIGH);
- //return;
- delay(1000);
- digitalWrite(A2, LOW);
- Serial.println("mnext");
- }
-
- //mpause暂停
- void mpause() {
- digitalWrite(A0, HIGH);
- delay(1000);
- digitalWrite(A0, LOW);
- Serial.println("mpause");
- }
- //mpower
- //void mpower() {
- // digitalWrite(A3, HIGH);
- // delay(500);
- //digitalWrite(A3, LOW);
- // Serial.println("mpower");
- //}
-
复制代码控制的原理就是通过超声波检测到不同距离的范围值来控制音乐扩展板上的A0-A3四个信号脚。因为HC-SR04有盲区,最低检测距离最好是在7cm以上,可以自己多调试。
另外内存卡里面的音乐文件排序在music扩展板读取的时候好像是相反的,切换上下首的顺序相反。如果介意的话可以把程序里的上下首切换的距离反过来。
因为这个music扩展板只占用了4个引脚,小伙伴们可以添加跟多的传感器来控制音乐播放:再加一个超声波模块控制音量;使用人体红外传感器制作音乐门铃等等。大开脑洞吧!
最后,演示视频如下: PS: 手机拍的,拿反了,用格式工厂旋转后视频会变形,不太懂怎么弄,有懂行的小伙伴可以帮我弄下吗?
|