swim 发表于 2012-7-18 12:24:40

求助,有关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官方技术手册

Muller_r 发表于 2012-7-18 15:11:41

我看过这个语音合成模块的演示视频...真心觉得除了可以用来做做公交车报站外,啥也做不了...声音太机械...

acdc0616 发表于 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
这是什么意思啊请教各位

acdc0616 发表于 2012-7-24 15:41:55

伙计我刚发现用Arduino 1.0.1 不支持这个库    用Arduino 0022就支持这个库   上传个Syn6288DFRobot厂家的库文件 试试能用吧

acdc0616 发表于 2012-7-24 15:42:32

acdc0616 发表于 2012-7-24 15:41 static/image/common/back.gif
伙计我刚发现用Arduino 1.0.1 不支持这个库    用Arduino 0022就支持这个库   上传个Syn6288DFRobot厂家的 ...

试试能用吧

星_star_雲 发表于 2012-10-25 20:02:25

我这里有一个我们老师写的希望对大家有帮助

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

Du_゜小草先生 发表于 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 static/image/common/back.gif
伙计我刚发现用Arduino 1.0.1 不支持这个库    用Arduino 0022就支持这个库   上传个Syn6288DFRobot厂家的 ...

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

这是另一个

futuremeng 发表于 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

futuremeng 发表于 2014-2-26 23:48:10

也就是说根据你的主板串口位置,确定你的Syn连在哪个串口,然后编译前修改Syn6288.cpp这个文件中的Serial为你所用的那个串口,如我的Arduino Yun+V7+Syn用的是Serial1,经测试正常。

可以查阅http://arduino.cc/en/reference/serial#.Uw4MofmSwYw

HeartRain 发表于 2014-12-26 21:17:08

futuremeng 发表于 2014-2-26 23:40 static/image/common/back.gif
貌似问题在于Syn连在了哪个串口上,如果用
/*
说明:


怎么编译错误

HeartRain 发表于 2014-12-26 21:24:58

futuremeng 发表于 2014-2-26 23:48 static/image/common/back.gif
也就是说根据你的主板串口位置,确定你的Syn连在哪个串口,然后编译前修改Syn6288.cpp这个文件中的Serial为 ...

现在好了就是不发声音
页: [1]
查看完整版本: 求助,有关syn6288语音合成模块