极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21296|回复: 6

【求助】arduino怎么同时播放多首MP3

[复制链接]
发表于 2013-3-1 10:38:14 | 显示全部楼层 |阅读模式
本帖最后由 阿花花 于 2013-3-1 10:44 编辑

请问如果arduino不连电脑怎么用多个喇叭同时播放多首MP3
需要哪些硬件?
谢谢~
回复

使用道具 举报

发表于 2013-3-1 16:44:38 | 显示全部楼层
你敢把问题描述清楚点么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-3-1 23:24:28 | 显示全部楼层
邓维安 发表于 2013-3-1 16:44
你敢把问题描述清楚点么?

就是像电子钢琴一样两个键按下同时发出两个音,不过我要的是同时播两个曲子
回复 支持 反对

使用道具 举报

发表于 2013-3-5 10:05:13 | 显示全部楼层
int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup()
{
  Serial.begin(19200);
  pinMode(10, INPUT);  //D10
  delay(2000);//等待2秒钟播放器初始化完成
  Serial.println("\\:v 250");    // 音量设置最大  数字 0-255 数字越大音量越大
  delay(50);
}

//接收串口命令字符,执行相应操作
void loop()
{
  int val,i;
  adc_key_in = analogRead(0);    // read the value from the sensor  

  key = get_key(adc_key_in);         // convert into key press
       
  if (key != oldkey)          // if keypress is detected
   {
    delay(50);                // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor  
    key = get_key(adc_key_in);           // convert into key press
    if (key != oldkey)                               
    {                       
      oldkey = key;
      if (key >=0){
        switch(key)
        {
           case 0:
                  Serial.println("\\:p");//暂停播放
                  Serial.println("OK");
                  break;
           case 1:
                  Serial.println("\\:s");//继续播放
                  Serial.println("OK");
                  break;
           case 2:
                  Serial.println("\\:n");  // 播放下一首
                  Serial.println("OK");
                  break;
           case 3:
                  Serial.println("\\:u"); // 播放上一首
                  Serial.println("OK");
                  break;      
           case 4://播放名称为yes的音频文件
                  //注意:必须将音量控制放在播放之前
                  Serial.println("\\:v 250");    // 音量设置250 数字 0-255 数字越大音量越大
                  //Serial.println("\\yes");
                  Serial.println("OK");  
                  break;   
        }                 
      }
    }
  }
delay(100);
}

// Convert ADC value to key number
int get_key(unsigned int input)
{
    int k;
   
    for (k = 0; k < NUM_KEYS; k++)
    {
      if (input < adc_key_val[k])
        {
            return k;
        }
   }
    if (k >= NUM_KEYS)k = -1;  // No valid key pressed
    return k;
}
回复 支持 反对

使用道具 举报

发表于 2013-3-5 10:05:55 | 显示全部楼层
改一下switch case 估计可以实现
回复 支持 反对

使用道具 举报

发表于 2013-3-9 22:55:12 | 显示全部楼层
邓维安 发表于 2013-3-5 10:05
int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;

arduino怎样播放mp3呢?是不是只能通过vs1003?
回复 支持 反对

使用道具 举报

发表于 2013-3-12 20:08:44 | 显示全部楼层
恺之 发表于 2013-3-9 22:55
arduino怎样播放mp3呢?是不是只能通过vs1003?

把mp3转换成wav以后直接用arduino+SD卡就能播放,不过同一时间只能播放一首~~如果要播放多首的话。。多个控制板吧。。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-4 18:36 , Processed in 0.122783 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表