IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> SU-03T,通过串口输入播放数字,可以使用单片机读取传感器数据并播报 -> 正文阅读

[嵌入式]SU-03T,通过串口输入播放数字,可以使用单片机读取传感器数据并播报

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用SU-03T,通过串口输入播放数字。


提示:以下是本篇文章正文内容,下面案例可供参考

一、网页端设置

第一步:先配置串口IO

在这里插入图片描述

第二步:配置触发方式串口输入

第三步:配置串口输入的参数,第一个参数选择int,可以最大播报0xFFFFFFFF,L1、L2、L3、L4,分别是小数部分。一般播报取四位小数足够日常使用。
在这里插入图片描述
第四步:点击添加控制,完成串口播放语音的配置。
在这里插入图片描述

二、使用

按照以上配置之后,对应要输入的数组格式为:
unsigned char VoiceCmd[13] = {0xAA, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAA};
通过观察可以得到
该数组的 VoiceCmd[2] 为消息编号位,即是控制语音模块播放哪条语音指令的控制为
VoiceCmd[3],VoiceCmd[4],VoiceCmd[5],VoiceCmd[6],H1这个参数的位置,即我所定义的整数位。
VoiceCmd[7],VoiceCmd[8],VoiceCmd[9],VoiceCmd[10],对应的是 L1、L2、L3、L4,即我定义的小数位。
例如想播报 用电量为230.4523千万时,H1位串口传入的高位 H1 = 230,L1 = 4,L2 = 5,L3 = 2,L4 = 3,截图上的消息号是7,即VoiceCmd[2] = 0x07,把这些十进制转十六进制,发送VoiceCmd[13] = {0xAA, 0x55, 0x07, 0xE6, 0x00, 0x00, 0x00, 0x04, 0x05, 0x02, 0x03, 0x55, 0xAA}; 发送这个数组即可播报“用电量为230.4523千万时”;

在这里插入图片描述

敲代码

本文提供Arduino 开发环境代码,其他单片机只需改串口配置即可

#include <SoftwareSerial.h>

SoftwareSerial mySerial(11, 12);


/*
  语音播报函数
  Cmd 是控制语音模块念哪一条指令
  data: 要念的数字
  DecimalDigits: 小数位(最大支持小数点后四位)
*/
void VoicePlay(uint8_t Cmd, float data, uint8_t DecimalDigits)
{
  //语音播报指令数组
  unsigned char VoiceCmd[13] = {0xAA, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAA};

  uint16_t temp = 0;
  VoiceCmd[2] = Cmd;
  if (DecimalDigits == 0) //整数
  {
    temp = (uint16_t)data;
    VoiceCmd[3] = temp & 0xFF;
    VoiceCmd[4] = temp >> 8;
  }
  else if (DecimalDigits == 1) //一位小数
  {
    temp = (uint16_t)(data * 10);
    VoiceCmd[3] = (temp / 10) & 0xFF;
    VoiceCmd[4] = (temp / 10) >> 8;

    VoiceCmd[7] = temp / 10 % 10;
  }
  else if (DecimalDigits == 2) //两位小数
  {
    temp = (uint16_t)(data * 100);
    VoiceCmd[3] = (temp / 100) & 0xFF;
    VoiceCmd[4] = (temp / 100) >> 8;
    //小数位
    VoiceCmd[7] = temp / 10 % 10;
    VoiceCmd[8] = temp % 10;
  }
  else if (DecimalDigits == 3) //三位小数
  {
    temp = (uint16_t)(data * 1000);

    VoiceCmd[3] = (temp / 1000) & 0xFF;
    VoiceCmd[4] = (temp / 1000) >> 8;
    //小数位
    VoiceCmd[7] = temp / 100 % 10;
    VoiceCmd[8] = temp / 10 % 10;
    VoiceCmd[9] = temp % 10;
  }
  else if (DecimalDigits == 4)
  {
    temp = (uint16_t)(data * 10000);
    VoiceCmd[3] = (temp / 10000) & 0xFF;
    VoiceCmd[4] = (temp / 10000) >> 8;
    //小数位
    VoiceCmd[7] = temp / 1000 % 10;
    VoiceCmd[8] = temp / 100 % 10;
    VoiceCmd[9] = temp / 10 % 10;
    VoiceCmd[10] = temp % 10;
  }
  mySerial.write(VoiceCmd, sizeof(VoiceCmd)); //发送播放指令
}

void setup()
{

  mySerial.begin(9600); //
}

void loop()
{
  VoicePlay(0x07, 230.4523,4);
  delay(5000);
}

要注意的是这个语音内容部分,如果在实际使用中你不需要播放小数点后四位这么多,在文本说明的(第四步)可以不添加这么多的串口参数,但是我个人建议在本文说明的(第三步)你还是添加1个int和4个unsigned char类型的数据,这么做的目的是当有多条串口输入数据需要播报的时候,统一串口输入的数组,简化编程。
例如,你要播报整数,本文的(第三步)配置不变,本文的(第四步)操作可改为下图所示,改该VoicePlay第三个参数为0。即可播报“用电量230千瓦时”的语音。

VoicePlay(0x07, 230.4523,0);

在这里插入图片描述
需要播放一位小数,本文的(第三步)配置不变,本文的(第四步),在添加H1串口参数之后,在添加L1,作为小数位,如下图所示。
改该VoicePlay第三个参数为1。

VoicePlay(0x07, 230.4523,1);

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:07:48  更:2022-09-30 01:10:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:42:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码