求助,有关syn6288语音合成模块
买了一个syn6288语音合成模块,先放上店家附赠的库和程序,不能实现keyword
Syn6288 KEYWORD1
Speech KEYWORD2
syn6288.cpp
#if defined(ARDUINO) && ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
#include "Syn6288.h"
Syn6288::Syn6288()
{
_nPort = 1;
_nBkm = 0;
}
void Syn6288::Speech(const char * txt,uchar bkm,uchar port)
{
uchar i=0;
uchar head;
uchar x=0;
head=0xfd;
head=0x00;
head=0x01;
_nPort=port;
_nBkm=bkm % (BKM_MAX + 1);
head=sizeof(txt) + 3;
head=_nBkm << 3;
Serial.write(head,HEAD_LEN);
for(i=0;i<HEAD_LEN;i++)
{
x=x^head;
if(_nPort==1)
Serial.write(head);
else if(_nPort==2)
Serial2.write(head);
}
for(i=0;i<head;i++)
{
x=x^txt;
if(_nPort==1)
Serial.write(txt);
else if(_nPort == 2)
Serial2.write(txt);
}
if(_nPort == 1)
Serial.write(x);
else if(_nPort == 2)
Serial2.write(x);
}
void Syn6288::Speech(const char * txt,uchar bkm)
{
Speech(txt,bkm,_nPort);
}
void Syn6288::Speech(const char * txt)
{
Speech(txt,_nBkm,_nPort);
}
syn6288.h
#ifndef SYN6288_H_
#define SYN6288_H_
#define uchar unsigned char
#define HEAD_LEN 5
#define BKM_MAX 15
class Syn6288
{
public:
Syn6288();
void Speech(const char * txt,uchar bkm,uchar port);
void Speech(const char * txt,uchar bkm);
void Speech(const char * txt);
private:
uchar _nPort;
uchar _nBkm;
};
#endif
ino文件
#include <Syn6288.h>
Syn6288 myTalk;
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
Serial2.begin(9600);
}
void loop() {
myTalk.Speech("文字1",1,2);
delay(3000);
myTalk.Speech("文字2",1);
delay(3000);
myTalk.Speech("文字3");
delay(3000);
}
但是不能实现,我按官方技术手册写了一个简单的程序可以实现,不过用起来比较麻烦
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial1.begin(9600);
}
void yuyin()
{
unsigned char head;
head=0xfd;
head=0x00;
head=0x13;
head=0x01;
head=0x00;
head=0x5b;
head=0x76;
head=0x31;
head=0x5d;
head=0x73;
head=0x6f;
head=0x75;
head=0x6e;
head=0x64;
head=0x6b;
head=0xd0;
head=0xa1;
head=0xc1;
head=0xc8;
head=0xc1;
head=0xc8;
head=0xd7;
for(int i=0;i<22;i++)
{
Serial1.write(head);
}
}
void loop() {
yuyin();
delay(5000);
}
各位大神能否帮我看看库文件有没有问题
附syn6288官方技术手册
我看过这个语音合成模块的演示视频...真心觉得除了可以用来做做公交车报站外,啥也做不了...声音太机械... 我也碰到了个问题编译错误
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
这是什么意思啊请教各位 伙计我刚发现用Arduino 1.0.1 不支持这个库 用Arduino 0022就支持这个库 上传个Syn6288DFRobot厂家的库文件 试试能用吧 acdc0616 发表于 2012-7-24 15:41 static/image/common/back.gif
伙计我刚发现用Arduino 1.0.1 不支持这个库 用Arduino 0022就支持这个库 上传个Syn6288DFRobot厂家的 ...
试试能用吧 我这里有一个我们老师写的希望对大家有帮助
另外希望大家可以帮我想想怎么读出变量谢谢啦
Serial2.begin(9600);你这个是啥? 本帖最后由 八硝基立方烷 于 2014-1-24 22:08 编辑
acdc0616 发表于 2012-7-24 15:41 static/image/common/back.gif
伙计我刚发现用Arduino 1.0.1 不支持这个库 用Arduino 0022就支持这个库 上传个Syn6288DFRobot厂家的 ...
将这个库里的“Serial.print(...,BYTE)”改为“Serial.write(...)”即可在Arduino1.0.1以上使用
这是另一个 貌似问题在于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 也就是说根据你的主板串口位置,确定你的Syn连在哪个串口,然后编译前修改Syn6288.cpp这个文件中的Serial为你所用的那个串口,如我的Arduino Yun+V7+Syn用的是Serial1,经测试正常。
可以查阅http://arduino.cc/en/reference/serial#.Uw4MofmSwYw
futuremeng 发表于 2014-2-26 23:40 static/image/common/back.gif
貌似问题在于Syn连在了哪个串口上,如果用
/*
说明:
怎么编译错误 futuremeng 发表于 2014-2-26 23:48 static/image/common/back.gif
也就是说根据你的主板串口位置,确定你的Syn连在哪个串口,然后编译前修改Syn6288.cpp这个文件中的Serial为 ...
现在好了就是不发声音
页:
[1]