Firefly开源社区

标题: Arduino单片机创客进化之路——音频篇2.2《双核应用:模拟机器人说话》 [打印本页]

作者: 暴走的阿Sai    时间: 2016-10-31 10:41
标题: Arduino单片机创客进化之路——音频篇2.2《双核应用:模拟机器人说话》
本帖最后由 暴走的阿Sai 于 2016-10-31 10:41 编辑

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


准备材料:
器件数量
Fireduino开发平台1块  
SD卡1块  
小音箱1个
LED1个
220欧姆电阻1个
杜邦线若干


连线图:



音频文件:
音频文件.rar (8.43 MB, 下载次数: 69)


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

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

  10. void setup() {
  11.   SD.begin(); //初始化SD卡
  12.   Audio.begin(AUDIO_SD);//使用SD卡上的音乐文件播放
  13.   pinMode(8,OUTPUT);
  14. }
  15. void led_on()
  16. {
  17.   digitalWrite(8,HIGH);
  18.   }

  19. void led_off()
  20. {
  21.   digitalWrite(8,LOW);
  22.   }  

  23. void led_flash()
  24. {
  25.       digitalWrite(8,HIGH);
  26.       delay(200);
  27.       digitalWrite(8,LOW);
  28.       delay(200);   
  29.   }  
  30. void loop() {
  31.     Audio.playFile("\\Hello.wav");// 播放SD卡根目录的Hello.wav
  32.     while(Audio.getStatus() != AudioStop)//等待音频播放完成,单独使用一个核,不影响其他操作
  33.     {led_on();}
  34.     led_off();
  35.     delay(1000);
  36.    
  37.     Audio.playFile("\\Speak.wav");// 播放SD卡根目录的Speak.wav
  38.     while(Audio.getStatus() != AudioStop)//等待音频播放完成,单独使用一个核,不影响其他操作
  39.     {led_on();}
  40.     led_off();
  41.     delay(1000);
  42.             
  43.             
  44.     Audio.playFile("\\Music.mp3");// 播放SD卡根目录的Music.mp3
  45.     while(Audio.getStatus() != AudioStop)//等待音频播放完成,单独使用一个核,不影响其他操作
  46.     {led_flash();}
  47.     led_off();
  48.     delay(500);
  49.               
  50. }
复制代码

如图用面包板实验



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



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

http://player.youku.com/player.php/sid/XMTc0MTk3MDc1Mg==/v.swf
Fireduino开发板购买地址

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

———————————————————————————
   Firefly微信公众号          阿Sai微博
———————————————————————————
Firefly官网:http://www.t-firefly.com
Firefly开源社区:http://developer.t-firefly.com






作者: xinxincaijq    时间: 2016-10-31 14:35
支持一个
作者: LQS1200    时间: 2016-10-31 17:04
比自己用arm7+vs1053方便多了!支持下!
作者: brandwarden    时间: 2016-11-22 10:50
双核使用只有这个例程吗?我看都封装到库里面了,如果想用多线程怎么使用?
作者: xinxincaijq    时间: 2016-11-23 08:56
支持
作者: 网老无    时间: 2017-3-9 13:52
小牛




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1