让我们一起爱米兰
站内搜搜:
移动设备
请扫描二维码
或访问
m.milan100.com
您所在的位置 -> 米兰百分百 -> arduino -> arduino的syn6288语言合成库

arduino的syn6288语言合成库

点击数:1632 发表时间:2020-01-23 22:16:09 作者: 来源链接:
分享到:
分享到微信

syn6288是一种常用的简单语音合成模块,以下是arduino的调用代码。


Syn6288.h
#ifndef Syn6288_h
#define Syn6288_h
#include <inttypes.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <Arduino.h>
#include <stddef.h>
#define HEADLEN      5
//#define LEN_OFFSET    2
//#define uint8_t    unsigned int
class Syn6288
{
  public:
//private:
    uint8_t music;
byte TEXTLEN;
uint8_t pi;
void play(uint8_t *text,uint8_t TEXTLEN,uint8_t music);
//void play(uint8_t *text,uint8_t music);
void Slaveboudset(uint16_t boudr);
void stop();
void restore();
void inquire();
void Pause();
void sleep();
};
#endif


Syn6288.cpp

#include <inttypes.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include "Syn6288.h"
#include <Arduino.h>
#include <stdio.h>
uint8_t head[5] = {0xfd,0x00,0x00,0x01,0x00};//合成播放命令
uint16_t boud[5]={0xFD,0x00,0x03,0x31,0x00}; //设置波特率
/*发送文本合成命令,music为背景音乐设置*/
void Syn6288::play(uint8_t *text,uint8_t TEXTLEN,uint8_t music)
  {
        pi=0;
        delay(100);
  head[2]=TEXTLEN+3;
   switch(music)
        {
          case 0: head[4]=0x01;break;
          case 1: head[4]=0x09;break;
          case 2: head[4]=0x11;break;
          case 3: head[4]=0x19;break;
          case 4: head[4]=0x21;break;
          case 5: head[4]=0x29;break; 
          case 6: head[4]=0x31;break;
          case 7: head[4]=0x39;break;
          case 8: head[4]=0x41;break;
          case 9: head[4]=0x49;break; 
          case 10: head[4]=0x51;break;
          case 11: head[4]=0x59;break;
          case 12: head[4]=0x61;break;
          case 13: head[4]=0x69;break;
          case 14: head[4]=0x71;break;
          case 15: head[4]=0x79;break;
        } 
for(int i=0;i<5;i++)
      {
        pi^=head[i];
//        Serial.print(head[i],BYTE);
        Serial.write(head[i]);
        delay(2);
      }
   for(int j=0;j<TEXTLEN;j++)
      {
        pi^=text[j];
//        Serial.print(text[j],BYTE);
        Serial.write(text[j]);
        delay(2);
      }
     Serial.write(pi);
delay(300*TEXTLEN);
  }
void Syn6288::Slaveboudset(uint16_t boudr)  //波特率设置
{
    uint8_t p;
    p=0;
switch(boudr)
  {
   case 9600:   boud[4]=0x00;
                   break;
   case 19200:  boud[4]=0x01;
                   break;
  }
  for(int z=0;z<HEADLEN;z++)
    {
      p^=boud[z];
      Serial.write(boud[z]);
      delay(2);
    }               
  Serial.write(p);
 p=0;
  for(int z=0;z<HEADLEN;z++)
    {
      p^=boud[z];
      Serial.write(boud[z]);
      delay(2);
    }               
 Serial.write(p);
  delay(200);
}
以上两个文件放到arduino目录的库目录,您的Arduino安装目录\libraries\Syn6288 目录下。

调用库进行语音合成

#include "Syn6288.h"
Syn6288 syn; 
uint8_t text1[] = {0xbb,0xb6,0xd3,0xad,0xb9,0xe2,0xc1,0xd9}; //欢迎光临
void setup()
{
  Serial.begin(9600);
}
void loop()
{
    syn.play(text1, sizeof(text1), 1);
    delay(10000);   
}

GBK汉字的十六进制转换
http://www.dwenzhao.cn/cal/php/hexhanzi.php
4
很 好
4
一 般
4
差 劲
热门新闻
相关文章
上一篇:
下一篇: Arduino 与 Raspberry Pi(树莓派)的内存及性能对比
评论区
匿名

返回首页 | 收藏本页 | 回到顶部
Copyright 2010. 米兰百分百 Powered By Bridge.
京ICP备15050557号