2014-8-29 21:02:48 [显示全部楼层]
11802浏览
查看: 11802|回复: 3

[项目] 用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

OvO  见习技师
 楼主|

发表于 2014-8-30 10:12:54

现在1有更人性化的版本了!一次上电只播放一次!
  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(1000);
  11.   Serial.println("");
  12.   Serial.println("Music Start.");
  13.   for (int i = 0; i < LENGTH; i++) {
  14.     digitalWrite(13, !digitalRead(13));
  15.     if ((i == 14) || (i == 12)) {
  16.       tone(8, music_1[i], 500);
  17.       delay(600);
  18.       Serial.println(music_1[i]);
  19.       i++;
  20.       continue;
  21.     }
  22.     tone(8, music_1[i], 200);
  23.     delay(300);
  24.     Serial.println(music_1[i]);
  25.   }
  26.   for (int i = 0; i < LENGTH; i++) {
  27.     digitalWrite(13, !digitalRead(13));
  28.     if ((i == 14) || (i == 12)) {
  29.       tone(8, music_2[i], 500);
  30.       delay(600);
  31.       Serial.println(music_2[i]);
  32.       i++;
  33.       continue;
  34.     }
  35.     tone(8, music_2[i], 200);
  36.     delay(300);
  37.     Serial.println(music_2[i]);
  38.   }
  39.   for (int i = 0; i < LENGTH + 2; i++) {
  40.     switch (i) {
  41.       case 16:
  42.         digitalWrite(13, !digitalRead(13));
  43.         tone(8, music_3[i], 500);
  44.         delay(600);
  45.         Serial.println(music_3[i]);
  46.         i++;
  47.         continue;
  48.         break;
  49.       case 5:
  50.       case 6:
  51.       case 10:
  52.       case 11:
  53.         digitalWrite(13, !digitalRead(13));
  54.         tone(8, music_3[i], 100);
  55.         delay(150);
  56.         Serial.println(music_3[i]);
  57.         break;
  58.       default:
  59.         digitalWrite(13, !digitalRead(13));
  60.         tone(8, music_3[i], 200);
  61.         delay(300);
  62.         Serial.println(music_3[i]);
  63.         break;
  64.     }
  65.   }
  66.   for (int i = 0; i < LENGTH; i++) {
  67.     digitalWrite(13, !digitalRead(13));
  68.     if ((i == 14) || (i == 12)) {
  69.       tone(8, music_2[i], 500);
  70.       delay(600);
  71.       Serial.println(music_2[i]);
  72.       i++;
  73.       continue;
  74.     }
  75.     tone(8, music_2[i], 200);
  76.     delay(300);
  77.     Serial.println(music_2[i]);
  78.   }
  79.   delay(1000);
  80.   Serial.println("Music End");
  81.   Serial.println("");
  82.   Serial.println("");
  83.   delay( 1000 );
  84.   while(true) {
  85.   }
  86. }
复制代码
回复

使用道具 举报

Ricky  NPC

发表于 2014-11-23 21:31:32

来段mp3,听一下。。。。。
回复

使用道具 举报

大连林海  初级技神

发表于 2014-12-17 18:25:14

等有了硬件一定要试试你的代码 看看是不是真的那么神奇:D
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail