Arduino单片机创客进化之路——音频篇2.2《双核应用:模拟机器人说话》

本帖最后由 暴走的阿Sai 于 2016-10-31 10:41 编辑

在上一个教程我们通过Audio.playFile这个函数简单的进行音频解码。这个函数的实际上是去调用了另外一个CPU核去解码,另外一个CPU还在空闲,所以我们可以这个教程就结合,做一个简单的实验在音频解码的同时控制LED,模拟机器人说话时眼睛亮灯的场景{:4_131:}

准备材料:

器件

数量

Fireduino开发平台

1块

SD卡

1块

小音箱

1个

LED

1个

220欧姆电阻

1个

杜邦线

若干

连线图:

音频文件:
音频文件.rar (8.43 MB)

实现效果:
1,机器人播放语音时LED常亮
2,机器人播放音乐时眼睛闪烁

代码:

/*
 作者:暴走的阿Sai
 时间:2016年9月28日
 发表地址:[url]www.t-firefly.com[/url]
 程序说明:
 播放SD卡上的音频文件
 */
#include "TF.h" //添加调用TF卡相关函数的头文件
#include "Audio.h" //添加调用音频相关函数的头文件

void setup() {
  SD.begin(); //初始化SD卡
  Audio.begin(AUDIO_SD);//使用SD卡上的音乐文件播放
  pinMode(8,OUTPUT);
}
void led_on()
{
  digitalWrite(8,HIGH);
  }

void led_off()
{
  digitalWrite(8,LOW);
  }

void led_flash()
{
      digitalWrite(8,HIGH);
      delay(200);
      digitalWrite(8,LOW);
      delay(200);
  }
void loop() {
    Audio.playFile("\\Hello.wav");// 播放SD卡根目录的Hello.wav
    while(Audio.getStatus() != AudioStop)//等待音频播放完成,单独使用一个核,不影响其他操作
    {led_on();}
    led_off();
    delay(1000);

    Audio.playFile("\\Speak.wav");// 播放SD卡根目录的Speak.wav
    while(Audio.getStatus() != AudioStop)//等待音频播放完成,单独使用一个核,不影响其他操作
    {led_on();}
    led_off();
    delay(1000);

    Audio.playFile("\\Music.mp3");// 播放SD卡根目录的Music.mp3
    while(Audio.getStatus() != AudioStop)//等待音频播放完成,单独使用一个核,不影响其他操作
    {led_flash();}
    led_off();
    delay(500);

}

如图用面包板实验

可以制作一个机器人头部,安装LED进去:

把LED安装到机器的头部,效果如视频:


Fireduino开发板购买地址

———————————————————————————
【教程传送】Arduino单片机创客进化之路教程汇总贴
【Fireduino QQ交流群】:450340779
———————————————————————————

Firefly微信公众号 阿Sai微博

———————————————————————————

Firefly官网:http://www.t-firefly.com

Firefly开源社区:http://developer.t-firefly.com

支持一个

比自己用arm7+vs1053方便多了!支持下!

双核使用只有这个例程吗?我看都封装到库里面了,如果想用多线程怎么使用?

支持

小牛