2026-7-6 15:02:25 [显示全部楼层]
8浏览
查看: 8|回复: 0

[教程] K10行空板之语音控制灯

[复制链接]
  • 行空板之语音控制灯

  • 代码如下:
  • 、// 引入离线语音识别ASR库,实现语音唤醒、命令识别与语音播报
  • #include "asr.h"
  • // 引入行空板K10硬件驱动库,用于控制屏幕、RGB彩灯等外设
  • #include "unihiker_k10.h"
  • // 实例化硬件对象
  • UNIHIKER_K10 k10;   // 行空板主控对象,操控屏幕、彩灯、语音播报
  • ASR          asr;    // 语音识别对象,处理收音、识别、TTS语音朗读
  • // 定义屏幕旋转参数,数值2代表屏幕倒置显示
  • uint8_t      screen_dir=2;
  • //=====================================================================
  • // setup初始化函数:上电/重启仅执行一次,完成硬件初始化与指令配置
  • //=====================================================================
  • void setup() {
  •         // 初始化行空板底层所有硬件资源
  •         k10.begin();
  •         // 配置语音识别模块
  •         // CONTINUOUS:持续不间断收音
  •         // CN_MODE:中文识别模式
  •         // 12000:语音检测灵敏度,数值越[media=x大抗环境噪音越强
  •         asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  •         // 阻塞等待语音模块启动完成
  •         // _asrState=0 表示语音模型正在加载,模块未就绪
  •         // 每100毫秒检测一次状态,防止硬件未就绪导致程序出错
  •         while(asr._asrState == 0){delay(100);}
  •         // 根据预设参数初始化显示屏
  •         k10.initScreen(screen_dir);
  •         // 创建屏幕绘图画布,所有文字先写入画布缓冲区
  •         k10.creatCanvas();
  •         // 设置语音播报语速
  •         // 参数范围1~5,数字越大语速越快;2为中等语速
  •         asr.setAsrSpeed(2);
  •         // 向语音模块添加两条自定义离线语音命令
  •         // 函数格式:addASRCommand(命令编号, 拼音口令)
  •         // 编号1:拼音 kai deng 对应中文“开灯”
  •         asr.addASRCommand(0+1, "kai deng");
  •         // 编号2:拼音 guan deng 对应中文“关灯”
  •         asr.addASRCommand(1+1, "guan deng");
  •         // 设置屏幕背景颜色:0x000000 纯黑色背景
  •         k10.setScreenBackground(0x000000);
  • }
  • //=====================================================================
  • // loop主循环:初始化完成后无限循环,实时监测语音指令
  • //=====================================================================
  • void loop() {
  •         // 条件判断:是否识别到唤醒词【你好小新】
  •         if (asr.isWakeUp()) {
  •                 // 唤醒成功:在画布第6行写入红色文字
  •                 k10.canvas->canvasText("已唤醒行空板.......", 6, 0xFF0000);
  •                 // 刷新画布内容到LCD屏幕
  •                 k10.canvas->updateCanvas();
  •         }
  •         else {
  •                 // 未唤醒状态:第4行写入浅蓝色文字,提示唤醒关键词
  •                 k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x33CCFF);
  •                 k10.canvas->updateCanvas();
  •         }
  •         // 判断:是否识别到编号1的语音命令“开灯”
  •         if (asr.isDetectCmdID(0+1)) {
  •                 // 在第9行写入白色文字,提示执行开灯动作
  •                 k10.canvas->canvasText("     打开白色灯光", 9, 0xFFFFFF);
  •                 k10.canvas->updateCanvas();
  •                 // 点亮全部RGB彩灯:-1代表所有灯珠,0xFFFFFF为纯白色
  •                 k10.rgb->write(-1, 0xFFFFFF);
  •                 // TTS语音合成,喇叭朗读语音:灯打开
  •                 asr.speak("灯打开");
  •                 // 保持画面与语音2秒
  •                 delay(2000);
  •         }
  •         // 判断:是否识别到编号2的语音命令“关灯”
  •         if (asr.isDetectCmdID(1+1)) {
  •                 // 清空画布第9行,避免新旧文字重叠
  •                 k10.canvas->canvasClear(9);
  •                 // 写入浅绿色文字,提示关灯动作
  •                 k10.canvas->canvasText("     关闭白色灯光", 9, 0x99FF99);
  •                 k10.canvas->updateCanvas();
  •                 // 关闭所有RGB彩灯,颜色0x000000代表熄灭
  •                 k10.rgb->write(-1, 0x000000);
  •                 // 喇叭语音播报:关灯了
  •                 asr.speak("关灯了");
  •                 // 画面停留2秒
  •                 delay(2000);
  •         }
  •         // 清空画布第6行及以下所有文字,清除上一轮显示内容
  •         k10.canvas->canvasClear(6);
  • }


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主

楼主的其它帖子

上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail