极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10277|回复: 2

SD卡声音播放代码和舵机代码不能写在一块运行?

[复制链接]
发表于 2014-11-12 20:06:27 | 显示全部楼层 |阅读模式
我最近想弄一个作品,关于控制舵机转动并伴随有音乐同时产生。
单独把控制舵机的代码或者控制SD卡声音播放代码写进板卡里都能独立正常的工作,但是一把两个代码写在一块后烧进板卡,声音要嘛不放,要嘛都是音调很高的噪音。
关于控制SD卡声音播放代码如下:
#include <SimpleSDAudio.h>
void setup()
{
  if (!SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO))
{
    while(1);
  }
  if(!SdPlay.setFile(“?.AFM"))【问号为SD卡里某一音频名称】
{
    while(1);
  }   
  SdPlay.play();

  while(!SdPlay.isStopped()) {
    SdPlay.worker();
  }
}
void loop(void) {
}
我只要在上述代码里加上servo.attach(pin)【pin为9或者10】这么一条代码。
就出现声音不能正常播放的情况,但是控制舵机似乎又少不了上面那条代码。
我分析是servo.attach(pin)和声音代码发生冲突,servo.attach(pin)占用了什么东西。
所以又试着在servo.attach(pin)后写进servo.detach()
结果是在噪音里听到隐约的音乐,而且音乐的节奏变慢下来
如果把servo.attach(pin)写在声音代码的末尾,声音就能正常播放。
但是我需要把声音代码写在void loop()里,进行循环控制,这时按上述那样做的话,声音就只会正常一次,
第二次就是音调很高的噪音了。


具体的控制SD卡声音代码在http://www.geek-workshop.com/thread-2611-1-1.html里有。
我还想通过代码的改写将两个代码分开,但是毫无头绪。
所以恳请大神不吝赐教。在下感激不尽。
回复

使用道具 举报

发表于 2015-1-14 19:55:53 | 显示全部楼层
问题是SD卡也要用到10(UNO这板是10)、11、12、13引脚,引脚使用冲突
回复 支持 反对

使用道具 举报

发表于 2015-1-14 19:59:06 | 显示全部楼层
舵机数量少的话,可以用3、5、6引脚接舵机(这三个脚也可以用舵机库的)
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 03:39 , Processed in 0.037118 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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