用Arduino做一个简单的音乐播放器

2014-08-291.8万
AI 快速预览详细 收起
本文介绍了如何使用Arduino制作一个简单的音乐播放器。通过读取频率数组并使用tone()函数播放音符,实现了音乐播放功能。项目难度较低,适合零基础的新手入门。硬件清单包括Arduino板、扬声器等。最终效果是能够播放预设的音乐片段。
不多说,先上图
用Arduino做一个简单的音乐播放器图1:lol
用Arduino做一个简单的音乐播放器图2

程序其实很简单,就是读数组里面的频率,然后就tone()播出去了。

  1. #define LENGTH 16
  2. int music_1[LENGTH]     =           {1318, 1318, 1397, 1568, 1568, 1397, 1318, 1175, 1046, 1046, 1175, 1318, 1318, 1318, 1175, 1175};
  3. int music_2[LENGTH]     =           {1318, 1318, 1397, 1568, 1568, 1397, 1318, 1175, 1046, 1046, 1175, 1318, 1175, 1175, 1046, 1046};
  4. int music_3[LENGTH + 2] = {1175, 1175, 1318, 1046, 1175, 1318, 1397, 1318, 1046, 1175, 1318, 1397, 1318, 1175, 1046, 1175, 784, 784};
  5. void setup() {
  6.   pinMode(13, OUTPUT);
  7.   Serial.begin(9600);
  8. }
  9. void loop() {
  10.   delay(5000);
  11.   Serial.println("");
  12.   while(true) {
  13.     Serial.println("Music Start.");
  14.     for(int i = 0; i < LENGTH; i++) {
  15.       digitalWrite(13, !digitalRead(13));
  16.       if((i == 14) || (i == 12)) {
  17.         tone(8, music_1[i], 500);
  18.         delay(600);
  19.         Serial.println(music_1[i]);
  20.         i++;
  21.         continue;
  22.       }
  23.       tone(8, music_1[i], 200);
  24.       delay(300);
  25.       Serial.println(music_1[i]);
  26.     }
  27.     for(int i = 0; i < LENGTH; i++) {
  28.       digitalWrite(13, !digitalRead(13));
  29.       if((i == 14) || (i == 12)) {
  30.         tone(8, music_2[i], 500);
  31.         delay(600);
  32.         Serial.println(music_2[i]);
  33.         i++;
  34.         continue;
  35.       }
  36.       tone(8, music_2[i], 200);
  37.       delay(300);
  38.       Serial.println(music_2[i]);
  39.     }
  40.     for(int i = 0; i < LENGTH + 2; i++) {
  41.       switch(i) {
  42.         case 16:
  43.           digitalWrite(13, !digitalRead(13));
  44.           tone(8, music_3[i], 500);
  45.           delay(600);
  46.           Serial.println(music_3[i]);
  47.           i++;
  48.           continue;
  49.           break;
  50.         case 5:
  51.         case 6:
  52.         case 10:
  53.         case 11:
  54.           digitalWrite(13, !digitalRead(13));
  55.           tone(8, music_3[i], 100);
  56.           delay(150);
  57.           Serial.println(music_3[i]);
  58.           break;
  59.         default:
  60.           digitalWrite(13, !digitalRead(13));
  61.           tone(8, music_3[i], 200);
  62.           delay(300);
  63.           Serial.println(music_3[i]);
  64.           break;
  65.       }
  66.     }
  67.     for(int i = 0; i < LENGTH; i++) {
  68.       digitalWrite(13, !digitalRead(13));
  69.       if((i == 14) || (i == 12)) {
  70.         tone(8, music_2[i], 500);
  71.         delay(600);
  72.         Serial.println(music_2[i]);
  73.         i++;
  74.         continue;
  75.       }
  76.       tone(8, music_2[i], 200);
  77.       delay(300);
  78.       Serial.println(music_2[i]);
  79.     }
  80.     delay(1000);
  81.     Serial.println("Music End");
  82.     Serial.println("");
  83.     Serial.println("");
  84.     delay( 1000 );
  85.   }
  86. }
复制代码

最后当然是连线图啦

用Arduino做一个简单的音乐播放器图3

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
qq815076543322
qq815076543322
等有了硬件一定要试试你的代码 看看是不是真的那么神奇:D
R2D2
R2D2
来段mp3,听一下。。。。。
OvO
OvO
作者
现在1有更人性化的版本了!一次上电只播放一次!
[code]#define LENGTH 16
int music_1[LENGTH] = {1318, 1318, 1397, 1568, 1568, 1397, 1318, 1175, 1046, 1046, 1175, 1318, 1318, 1318, 1175, 1175};
int music_2[LENGTH] = {1318, 1318, 1397, 1568, 1568, 1397, 1318, 1175, 1046, 1046, 1175, 1318, 1175, 1175, 1046, 1046};
int music_3[LENGTH + 2] = {1175, 1175, 1318, 1046, 1175, 1318, 1397, 1318, 1046, 1175, 1318, 1397, 1318, 1175, 1046, 1175, 784, 784};
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
delay(1000);
Serial.println("");
Serial.println("Music Start.");
for (int i = 0; i < LENGTH; i++) {
digitalWrite(13, !digitalRead(13));
if ((i == 14) || (i == 12)) {
tone(8, music_1[i], 500);
delay(600);
Serial.println(music_1[i]);
i++;
continue;
}
tone(8, music_1[i], 200);
delay(300);
Serial.println(music_1[i]);
}
for (int i = 0; i < LENGTH; i++) {
digitalWrite(13, !digitalRead(13));
if ((i == 14) || (i == 12)) {
tone(8, music_2[i], 500);
delay(600);
Serial.println(music_2[i]);
i++;
continue;
}
tone(8, music_2[i], 200);
delay(300);
Serial.println(music_2[i]);
}
for (int i = 0; i < LENGTH + 2; i++) {
switch (i) {
case 16:
digitalWrite(13, !digitalRead(13));
tone(8, music_3[i], 500);
delay(600);
Serial.println(music_3[i]);
i++;
continue;
break;
case 5:
case 6:
case 10:
case 11:
digitalWrite(13, !digitalRead(13));
tone(8, music_3[i], 100);
delay(150);
Serial.println(music_3[i]);
break;
default:
digitalWrite(13, !digitalRead(13));
tone(8, music_3[i], 200);
delay(300);
Serial.println(music_3[i]);
break;
}
}
for (int i = 0; i < LENGTH; i++) {
digitalWrite(13, !digitalRead(13));
if ((i == 14) || (i == 12)) {
tone(8, music_2[i], 500);
delay(600);
Serial.println(music_2[i]);
i++;
continue;
}
tone(8, music_2[i], 200);
delay(300);
Serial.println(music_2[i]);
}
delay(1000);
Serial.println("Music End");
Serial.println("");
Serial.println("");
delay( 1000 );
while(true) {
}
}[/code]
- 没有更多了 -