极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 30432|回复: 11

求助,有关syn6288语音合成模块

[复制链接]
发表于 2012-7-18 12:24:40 | 显示全部楼层 |阅读模式
买了一个syn6288语音合成模块,先放上店家附赠的库和程序,不能实现
keyword

  1. Syn6288        KEYWORD1
  2. Speech        KEYWORD2
复制代码

syn6288.cpp
  1. #if defined(ARDUINO) && ARDUINO >= 100
  2.   #include <Arduino.h>
  3. #else
  4.   #include <WProgram.h>
  5. #endif

  6. #include "Syn6288.h"

  7. Syn6288::Syn6288()
  8. {
  9. _nPort = 1;
  10. _nBkm = 0;
  11. }

  12. void Syn6288::Speech(const char * txt,uchar bkm,uchar port)
  13. {
  14. uchar i=0;
  15. uchar head[5];
  16. uchar x=0;

  17. head[0]=0xfd;
  18. head[1]=0x00;
  19. head[3]=0x01;

  20. _nPort=port;
  21. _nBkm=bkm % (BKM_MAX + 1);
  22. head[2]=sizeof(txt) + 3;
  23. head[4]=_nBkm << 3;
  24. Serial.write(head,HEAD_LEN);
  25. for(i=0;i<HEAD_LEN;i++)
  26. {
  27. x=x^head[i];
  28. if(_nPort==1)
  29. Serial.write(head[i]);

  30. else if(_nPort==2)
  31. Serial2.write(head[i]);
  32. }

  33. for(i=0;i<head[2];i++)
  34. {
  35. x=x^txt[i];
  36. if(_nPort==1)
  37. Serial.write(txt[i]);
  38. else if(_nPort == 2)
  39. Serial2.write(txt[i]);
  40. }
  41. if(_nPort == 1)
  42. Serial.write(x);
  43. else if(_nPort == 2)
  44. Serial2.write(x);
  45. }

  46. void Syn6288::Speech(const char * txt,uchar bkm)
  47. {
  48. Speech(txt,bkm,_nPort);
  49. }

  50. void Syn6288::Speech(const char * txt)
  51. {
  52. Speech(txt,_nBkm,_nPort);
  53. }

复制代码

syn6288.h
  1. #ifndef SYN6288_H_
  2. #define SYN6288_H_
  3. #define uchar unsigned char
  4. #define HEAD_LEN 5
  5. #define BKM_MAX 15

  6. class Syn6288
  7. {
  8. public:
  9. Syn6288();
  10. void Speech(const char * txt,uchar bkm,uchar port);
  11. void Speech(const char * txt,uchar bkm);
  12. void Speech(const char * txt);
  13. private:
  14. uchar _nPort;
  15. uchar _nBkm;
  16. };

  17. #endif
复制代码

ino文件
  1. #include <Syn6288.h>
  2. Syn6288 myTalk;

  3. void setup() {
  4. Serial.begin(9600); // set up Serial library at 9600 bps
  5. Serial.println("Motor test!");
  6. Serial2.begin(9600);
  7. }

  8. void loop() {
  9.   myTalk.Speech("文字1",1,2);
  10. delay(3000);
  11.   myTalk.Speech("文字2",1);
  12. delay(3000);
  13.   myTalk.Speech("文字3");
  14. delay(3000);

  15. }
复制代码


但是不能实现,我按官方技术手册写了一个简单的程序可以实现,不过用起来比较麻烦


  1. void setup() {
  2. Serial.begin(9600); // set up Serial library at 9600 bps
  3. Serial1.begin(9600);
  4. }
  5. void yuyin()
  6. {
  7.   unsigned char head[21];
  8. head[0]=0xfd;
  9. head[1]=0x00;
  10. head[2]=0x13;
  11. head[3]=0x01;
  12. head[4]=0x00;
  13. head[5]=0x5b;
  14. head[6]=0x76;
  15. head[7]=0x31;
  16. head[8]=0x5d;
  17. head[9]=0x73;
  18. head[10]=0x6f;
  19. head[11]=0x75;
  20. head[12]=0x6e;
  21. head[13]=0x64;
  22. head[14]=0x6b;
  23. head[15]=0xd0;
  24. head[16]=0xa1;
  25. head[17]=0xc1;
  26. head[18]=0xc8;
  27. head[19]=0xc1;
  28. head[20]=0xc8;
  29. head[21]=0xd7;
  30. for(int i=0;i<22;i++)
  31. {
  32. Serial1.write(head[i]);
  33. }
  34. }
  35. void loop() {
  36. yuyin();
  37. delay(5000);
  38. }
复制代码
各位大神能否帮我看看库文件有没有问题

附syn6288官方技术手册

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-7-18 15:11:41 | 显示全部楼层
我看过这个语音合成模块的演示视频...真心觉得除了可以用来做做公交车报站外,啥也做不了...声音太机械...
回复 支持 反对

使用道具 举报

发表于 2012-7-24 14:59:12 | 显示全部楼层
我也碰到了个问题  编译错误
In file included from Syn6288_test.cpp:1:
D:\Program Files\arduino-1.0.1\libraries\Syn6288/Syn6288.h:19: error: 'byte' does not name a type
这是什么意思啊  请教各位
回复 支持 反对

使用道具 举报

发表于 2012-7-24 15:41:55 | 显示全部楼层
伙计我刚发现用Arduino 1.0.1 不支持这个库    用Arduino 0022就支持这个库   上传个Syn6288  DFRobot厂家的库文件 试试能用吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2012-7-24 15:42:32 | 显示全部楼层
acdc0616 发表于 2012-7-24 15:41
伙计我刚发现用Arduino 1.0.1 不支持这个库    用Arduino 0022就支持这个库   上传个Syn6288  DFRobot厂家的 ...

试试能用吧
回复 支持 反对

使用道具 举报

发表于 2012-10-25 20:02:25 | 显示全部楼层
我这里有一个我们老师写的  希望对大家有帮助

另外希望大家可以帮我想想怎么读出变量  谢谢啦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-8-13 19:42:20 | 显示全部楼层
Serial2.begin(9600);你这个是啥?
回复 支持 反对

使用道具 举报

发表于 2014-1-24 19:55:31 | 显示全部楼层
本帖最后由 八硝基立方烷 于 2014-1-24 22:08 编辑
acdc0616 发表于 2012-7-24 15:41
伙计我刚发现用Arduino 1.0.1 不支持这个库    用Arduino 0022就支持这个库   上传个Syn6288  DFRobot厂家的 ...


将这个库里的“Serial.print(...,BYTE)”改为“Serial.write(...)”即可在Arduino1.0.1以上使用

这是另一个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-2-26 23:40:09 | 显示全部楼层
貌似问题在于Syn连在了哪个串口上,如果用
/*
  说明:
  “0xB3,0xC9”代表一个字“成”,以此类推。
*/
#include "Syn6288.h"
Syn6288 syn;
uint8_t text1[]={0xB3,0xC9,0xB6,0xBC,0xBC,0xAB,0xC8,0xA4,0xBF,0xC6,0xBC,0xBC,0xD3,0xD0,0xCF,0xDE,0xB9,0xAB,0xCB,0xBE};   //成都极趣科技有限公司
uint8_t text2[]={0x77,0x77,0x77,0x2E,0x64,0x66,0x72,0x6F,0x62,0x6F,0x74,0x2E,0x63,0x6F,0x6D,0x2E,0x63,0x6E};   //www.dfrobot.com.cn
uint8_t text3[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};   //0,1,2,3,4,5,6,7,8,9
void setup()
{
  Serial.begin(9600);
  //syn.Slaveboudset(19200);//修改波特率
  //Serial.begin(19200);
}
void loop()
{
  syn.play(text1,sizeof(text1),1);//合成text1,背景音乐1
  syn.play(text2,sizeof(text2),2);//合成text2,背景音乐2   
  syn.play(text3,sizeof(text3),3);//合成text3,背景音乐3
}
这样的代码,那相当于用的是Serial,而不是Serial1或者Serial2
回复 支持 反对

使用道具 举报

发表于 2014-2-26 23:48:10 | 显示全部楼层
也就是说根据你的主板串口位置,确定你的Syn连在哪个串口,然后编译前修改Syn6288.cpp这个文件中的Serial为你所用的那个串口,如我的Arduino Yun+V7+Syn用的是Serial1,经测试正常。

可以查阅http://arduino.cc/en/reference/serial#.Uw4MofmSwYw
回复 支持 反对

使用道具 举报

发表于 2014-12-26 21:17:08 | 显示全部楼层
futuremeng 发表于 2014-2-26 23:40
貌似问题在于Syn连在了哪个串口上,如果用
/*
  说明:

怎么编译错误
回复 支持 反对

使用道具 举报

发表于 2014-12-26 21:24:58 | 显示全部楼层
futuremeng 发表于 2014-2-26 23:48
也就是说根据你的主板串口位置,确定你的Syn连在哪个串口,然后编译前修改Syn6288.cpp这个文件中的Serial为 ...

现在好了  就是不发声音
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 04:10 , Processed in 0.040938 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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