2025-2-20 23:31:35 [显示全部楼层]
48浏览
查看: 48|回复: 0

[K10项目分享] 行空板K10视力测试仪语音版

[复制链接]
本帖最后由 忆天 于 2025-2-20 23:58 编辑

【意义】关心视力健康,定期测试视力。
【原理】在一定距离查看一定大小的E字,并回答对其相应的方向。
【环节】
1.生成大小不同的E字形图
2.判断方向,方向正确,缩小后再生成;方向错误,原大小生成。
3.根据判断的结果得出视力
【设计想法】
E字的设计,参照汉字编码,设计成5*5共25个色块,然后填充。行空板K10视力测试仪语音版图1
【效果图】
行空板K10视力测试仪语音版图3【演示视频】

【代码图】
行空板K10视力测试仪语音版图2
【代码】
  1. /*!
  2. * MindPlus
  3. * esp32s3bit
  4. *
  5. */
  6. #include "asr.h"
  7. #include <SimpleList.h>
  8. #include "unihiker_k10.h"
  9. // 动态变量
  10. volatile float     mind_n_h, mind_n_n, mind_n_HuiDaFangXiang, mind_n_SuiJiFangXiang,
  11.                    mind_n_m5, mind_n_m3, mind_n_m_1, mind_n_n5, mind_n_n4;
  12. SimpleList<String> mind_l_EZiFangXiangLieBiao;
  13. // 函数声明
  14. void DF_HuaDaXieEZi();
  15. void DF_PanDuanEZiFangXiang();
  16. // 创建对象
  17. UNIHIKER_K10 k10;
  18. uint8_t      screen_dir=2;
  19. ASR          asr;
  20. // 主程序开始
  21. void setup() {
  22.         k10.begin();
  23.         k10.initScreen(screen_dir);
  24.         k10.creatCanvas();
  25.         asr.setAsrSpeed(2);
  26.         asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  27.         while(asr._asrState == 0){delay(100);}
  28.         k10.canvas->canvasText("K10视力仪版语音版", 1, 0xFF0000);
  29.         k10.canvas->updateCanvas();
  30.         asr.speak("  欢迎使用"K10视力仪语音版"");
  31.         asr.addASRCommand(0+1, "kai shi ce shi");
  32.         asr.addASRCommand(1+1, "shang");
  33.         asr.addASRCommand(2+1, "xia");
  34.         asr.addASRCommand(3+1, "zuo");
  35.         asr.addASRCommand(4+1, "you");
  36.         asr.addASRCommand(5+1, "chong xin ce shi");
  37.         mind_l_EZiFangXiangLieBiao.push_back("上");
  38.         mind_l_EZiFangXiangLieBiao.push_back("下");
  39.         mind_l_EZiFangXiangLieBiao.push_back("左");
  40.         mind_l_EZiFangXiangLieBiao.push_back("右");
  41.         mind_n_h = 80;
  42.         mind_n_n = 40;
  43. }
  44. void loop() {
  45.         if (asr.isWakeUp()) {
  46.                 k10.canvas->canvasText("请说开始测试", 2, 0x0000FF);
  47.                 k10.canvas->updateCanvas();
  48.         }
  49.         else {
  50.                 k10.canvas->canvasText("请说您好小鑫唤醒", 2, 0x0000FF);
  51.                 k10.canvas->updateCanvas();
  52.         }
  53.         if (asr.isDetectCmdID(0+1)) {
  54.                 DF_HuaDaXieEZi();
  55.         }
  56.         if (asr.isDetectCmdID(1+1)) {
  57.                 mind_n_HuiDaFangXiang = 1;
  58.                 DF_PanDuanEZiFangXiang();
  59.         }
  60.         if (asr.isDetectCmdID(2+1)) {
  61.                 mind_n_HuiDaFangXiang = 2;
  62.                 DF_PanDuanEZiFangXiang();
  63.         }
  64.         if (asr.isDetectCmdID(3+1)) {
  65.                 mind_n_HuiDaFangXiang = 3;
  66.                 DF_PanDuanEZiFangXiang();
  67.         }
  68.         if (asr.isDetectCmdID(4+1)) {
  69.                 mind_n_HuiDaFangXiang = 4;
  70.                 DF_PanDuanEZiFangXiang();
  71.         }
  72.         if (asr.isDetectCmdID(5+1)) {
  73.                 mind_n_n = 40;
  74.                 DF_HuaDaXieEZi();
  75.         }
  76. }
  77. // 自定义函数
  78. void DF_HuaDaXieEZi() {
  79.         mind_n_SuiJiFangXiang = (random(1, 4+1));
  80.         mind_n_m5 = ((240 - (mind_n_n * 5)) / 2);
  81.         mind_n_m3 = ((240 - (mind_n_n * 3)) / 2);
  82.         mind_n_m_1 = ((240 - (mind_n_n * -1)) / 2);
  83.         mind_n_n5 = (mind_n_n * 5);
  84.         mind_n_n4 = (mind_n_n * 4);
  85.         k10.canvas->canvasRectangle(0, mind_n_h, 240, 240, 0xFFFFFF, 0xFFFFFF, true);
  86.         k10.canvas->canvasRectangle(mind_n_m5, (mind_n_h + mind_n_m5), mind_n_n5, mind_n_n5, 0xFF6666, 0xFF6666, true);
  87.         if ((mind_n_SuiJiFangXiang==1)) {
  88.                 k10.canvas->canvasRectangle(mind_n_m3, (mind_n_h + mind_n_m5), mind_n_n, mind_n_n4, 0xFFFFFF, 0xFFFFFF, true);
  89.                 k10.canvas->canvasRectangle(mind_n_m_1, (mind_n_h + mind_n_m5), mind_n_n, mind_n_n4, 0xFFFFFF, 0xFFFFFF, true);
  90.         }
  91.         if ((mind_n_SuiJiFangXiang==2)) {
  92.                 k10.canvas->canvasRectangle(mind_n_m3, (mind_n_h + mind_n_m3), mind_n_n, mind_n_n4, 0xFFFFFF, 0xFFFFFF, true);
  93.                 k10.canvas->canvasRectangle(mind_n_m_1, (mind_n_h + mind_n_m3), mind_n_n, mind_n_n4, 0xFFFFFF, 0xFFFFFF, true);
  94.         }
  95.         if ((mind_n_SuiJiFangXiang==4)) {
  96.                 k10.canvas->canvasRectangle(mind_n_m3, (mind_n_h + mind_n_m3), mind_n_n4, mind_n_n, 0xFFFFFF, 0xFFFFFF, true);
  97.                 k10.canvas->canvasRectangle(mind_n_m3, (mind_n_h + mind_n_m_1), mind_n_n4, mind_n_n, 0xFFFFFF, 0xFFFFFF, true);
  98.         }
  99.         if ((mind_n_SuiJiFangXiang==3)) {
  100.                 k10.canvas->canvasRectangle(mind_n_m5, (mind_n_h + mind_n_m3), mind_n_n4, mind_n_n, 0xFFFFFF, 0xFFFFFF, true);
  101.                 k10.canvas->canvasRectangle(mind_n_m5, (mind_n_h + mind_n_m_1), mind_n_n4, mind_n_n, 0xFFFFFF, 0xFFFFFF, true);
  102.         }
  103.         k10.canvas->updateCanvas();
  104. }
  105. void DF_PanDuanEZiFangXiang() {
  106.         if ((mind_n_HuiDaFangXiang==mind_n_SuiJiFangXiang)) {
  107.                 k10.canvas->canvasText("方向正确", 3, 0x0000FF);
  108.                 asr.speak("方向正确");
  109.                 mind_n_n -= 5;
  110.                 if ((mind_n_n<=5)) {
  111.                         k10.canvas->canvasText("视力非常好", 3, 0x0000FF);
  112.                         asr.speak("视力非常好");
  113.                         mind_n_n = 5;
  114.                 }
  115.                 mind_n_SuiJiFangXiang = (random(1, 4+1));
  116.                 DF_HuaDaXieEZi();
  117.         }
  118.         else {
  119.                 k10.canvas->canvasText("方向错误", 3, 0x0000FF);
  120.                 asr.speak("方向错误");
  121.                 DF_HuaDaXieEZi();
  122.         }
  123. }
复制代码

【相关知识】
1.行空板K10—文字图形显示
缓存显示文字“行空板”在第1行,颜色红。
将缓存内容显示或更新。
2.行空板K10—语音合成
语音合成“你好”。
3.语音识别
设置语音识别,连续时间12000,语言中文。
添加语言识别命令词ID:0,命令“kai shi ce shi”

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

本版积分规则

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

硬件清单

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

楼主的其它帖子

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

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

mail