一、播报可变的文字
mixly程序,这里我用的是ESP32,因为这个模块是RX和TX是3.3v的,所以arduino uno要使用的话就需要一个5V转3.3v的电平转换模块,接线的话RX和TX交叉相接就行
arduino代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(5,4);
unsigned char jiewei[5]={0xFD,0X00,0X0E,0X01,0X04};
void setup(){
mySerial.begin(115200);
}
void loop(){
mySerial.write(jiewei,5);
mySerial.write("你好世界");
delay(5000);
}
根据资料可以知道,发送的格式为
0XFD 是数据的开头,0x00和0x0E是文本的字节数,由于这里arduino发送的中文是UTF8格式,所以一个文字就是三个字节,字节数就是文字数*3+2,0x01就是命令字表示开始,0x04的意思是用UTF8格式
unsigned char jiewei[5]={0xFD,0X00,0X0E,0X01,0X04};
需要修改的就是根据播报我文字数修改0x0E这个参数,比如要播报你好世界,那就是4个字4*3+2=14也就是16进制的E
二、文本可调
mixly代码
arduino代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(5,4);
unsigned char jiewei[5]={0xFD,0X00,0X0E,0X01,0X04};
void setup(){
mySerial.begin(115200);
jiewei[(int)(2)] = 0x08;
}
void loop(){
mySerial.write(jiewei,5);
mySerial.write("你好");
delay(5000);
}
只需要把0x08给修改就行
测试arduino的文字转UTF8还是有点问题,测试合成5个字以内没有问题,合成多了值就不对了,合成大量的字的时候最好还是通过网站转换,然后放到数组中