Developer_x 发表于 2016-10-31 11:56:53

Arduino语音应用:模拟机器人说话

本帖最后由 Developer_x 于 2016-10-31 11:56 编辑

之前用过Fireduino的Audio.playFile这个函数简单的进行音频解码。这个函数的实际上是去调用了另外一个CPU核去解码,另外一个CPU还在空闲,所以用一个核做音频解码另外一个核同时控制LED,模拟机器人说话时眼睛亮灯的场景

先上视频:
http://player.youku.com/player.php/sid/XMTc0MTk3MDc1Mg==/v.swf


准备材料:


连线图:



音频文件:
http://pan.baidu.com/s/1ccK0UE
音频文件解压后,放到SD卡根目录

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

代码:

/*
作者:暴走的阿Sai
时间:2016年9月28日
发表地址:www.t-firefly.com
程序说明:
播放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安装到机器的头部,效果如视频所示

原帖地址:http://developer.t-firefly.com/forum.php?mod=viewthread&tid=10832&page=1&extra=#pid23829

Paderboy 发表于 2016-10-31 15:34:08

这个板赞啊‘
页: [1]
查看完整版本: Arduino语音应用:模拟机器人说话