现在所使用的WTN型语音芯片,应用还是挺广泛的,为方便对其操作,创建一个yuyin类,其数据成员部分包括语句数据、命令数据和音量数据,其中语句数据是事先已经烧录进语音芯片中的。类中成员函数可进行的操作是:1、指定播放第几个语句数据
  2、调节音量的大小  3,、改变语句的播放模式。

class  yuyin

{  

}

Yuyin.h文件

#ifndef YUYIN_H_
#define YUYIN_H_
#include <stdio.h>
#define YUYIN_xunhuandangqiang   0xF2
#define YUYIN_lianmabofang       0xF3
#define YUYIN_charujinyin        0xF8
#define YUYIN_tingzhidangqian   0xFE

class  Yuyin
{  
private: 
int yuju_n; 
int yinliang_n ; 
byte P_DATA;
 char   yuju[225];
 char   yinliang[16];

public:

Yuyin(int n ,byte pin , byte PinMode);
~Yuyin();

  void  writedata(  char SB_DATA) ;    
 void tiaodayinliang();                 
void  tiaoxiaoyinliang();               
void bofangyuju(int yuju_i);           
void bofangmoshi(int  moshi_i);   

};
#endif

Yuyin.cpp文件

#if ARDUINO >= 100 
  
#include "Arduino.h"

#else
  
#include "WProgram.h"

#endif

#include "Yuyin.h"

Yuyin::Yuyin(int n, byte m)
{

 pinMode(pin, PinMode); 
    yuju_n=n;
    P_DATA=m;
   yinliang_n=15;
   yuju[ 225]={0X00,0X01,0X02};
   mingling[4]={0XF2,0XFE,0XF3,0XF8};
 
 yinliang[16]={0XE0,0XE1,0XE2,0XE3,0XE4,0XE5,0XE6,0XE7,0XE8,0XE9,0XEa,0XEb,0XEc,0XEd,0XEe,0XEf};

}

Yuyin::~Yuyin()

Yuyin:: writedata( char SB_DATA)
{
unsigned char S_DATA;
boolean  B_DATA;
S_DATA = SB_DATA;
digitalWrite(P_DATA,LOW);
delay(5); 
B_DATA = S_DATA&0X01;
for(int j=0;j<8;j++)
{
if(B_DATA == true)
{
digitalWrite(P_DATA,HIGH);
delayMicroseconds(600);
digitalWrite(P_DATA,LOW);
delayMicroseconds(200); 
}
else
{
digitalWrite(P_DATA,HIGH);
delayMicroseconds(200); 
digitalWrite(P_DATA,LOW);
delayMicroseconds(600);
}
S_DATA = (S_DATA>>1);
B_DATA = S_DATA&0X01;
}
digitalWrite(P_DATA,HIGH);
}

Yuyin::tiaoxiaoyinliang()

{
    if(yinliang_n>0)
    {
     yinliang_n --;
     writedata(yinliang[yinliang_n]);
    }
    else
    yinliang_n=0;

}

Yuyin::tiaodayinliang()
{
    if(yinliang_n<15)
    {
     yinliang_n++;
     writedata(yinliang[yinliang_n]);
    }
    else
    yinliang_n=15;

}

Yuyin::bofangyuju(int yuju_i)
{
    if(0<=yuju_i<=yuju_n)
     writedata(yuju[yuju_i]);
    else if(yuju_i<0)
     writedata(yuju[0]);
    else (yuju_i>yuju_n)
     writedata(yuju[yuju_n]);

}

Yuyin::bofangmoshi(int  moshi_i)
{
if(moshi_i==YUYIN_xunhuandangqiang)
     writedata(YUYIN_xunhuandangqiang);
    else if(moshi_i==YUYIN_lianmabofang)
     writedata(YUYIN_lianmabofang);
    else if(moshi_i==YUYIN_charujinyin)
     writedata(YUYIN_charujinyin);
    else (moshi_i==YUYIN_tingzhidangqian)
     writedata(YUYIN_tingzhidangqian);
}

技术
©2019-2020 Toolsou All rights reserved,
分页工具类PageResultelement-ui+vue-treeselect下拉框的校验Thread.getContextClassLoader与Thread.getClassLoader()区别(精华2020年6月3日更新) TypeScript中接口详解pytorch之ResNet18(对cifar10数据进行分类准确度达到94%)常见的5种JAVA运行时异常ELementUI select多选下拉框获取选中项的全部属性css基础2:flex 多行均分有间隙布局Centos7 下mysql8.0的安装以及修改初始密码;SSM项目的excel文件上传并添加到数据库