|
8| 5
|
[K10教程] 【花雕动手做】K10 实验之后台播放与播放音符音调1155661 |
![]() 行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。 主要特点 集成摄像头&内置算法,可进行离线图像检测 集成麦克风&内置算法,可进行离线语音识别 集成扬声器&内置算法,可进行离线语音合成 2.8寸彩色屏幕,数据展示更清晰 集成度高,利于教学 接口丰富,兼容软件多,扩展性好 ![]() |
|
【花雕动手做】行空板 K10 系列实验之音频录放后台播放与播放音符音调1155661 实验开源代码 |
|
代码解读 一、头部:库引入、全局变量、函数声明 导入行空板 K10 官方集成库,内置屏幕、按键、RGB 彩灯、扬声器音频全套驱动,无需手动配置硬件引脚。 变量作用:状态标记,用来区分用户按下 A 键还是 B 键; volatile关键字:该变量会在按键回调函数中修改,告诉编译器不要优化缓存,保证主循环能实时读到最新数值,防止按键失效、状态不刷新。 函数前置声明。后面要给按键绑定这两个按下触发函数,编译器需要提前识别函数名,否则会报未定义错误。 行空板硬件总实例,屏幕、灯光、按键、喇叭全部通过k10调用。 屏幕旋转参数,0/1/2/3 对应四种显示方向,3 为当前设置的屏幕朝向。 音频播放对象,两种播放能力:内置完整旋律、自定义单音符播放。 二、setup () 初始化函数(上电只执行 1 次) k10.begin():初始化主板底层硬件总线; k10.initScreen(screen_dir):按指定方向初始化显示屏; k10.creatCanvas():创建屏幕画布缓存,绘图先存缓存,统一刷新,消除屏幕闪烁; setPressedCallback():绑定按键回调,按下 A/B 会自动执行对应函数,属于中断式响应,不会被delay卡住; setScreenBackground(0x000000):屏幕底色设纯黑; canvasText(文字,行数,颜色):在画布指定行打印彩色文字,展示实验标题与功能说明; updateCanvas():把缓存里的文字刷新到实体屏幕; mind_n_okk = 0:开机初始化状态标记,0 = 无播放任务。 三、loop () 无限主循环 程序初始化完成后,该函数不停循环运行,负责执行音频播放逻辑。 判断 mind_n_okk == 1(A 键按下标记) 延时 500ms; 调用内置旋律播放生日快乐歌; 标记清零,避免重复循环播放。 判断 mind_n_okk == 2(B 键按下标记) 延时 500ms; playTone(频率,持续毫秒) 逐个播放音符,实现《一闪一闪亮晶晶》片段; 标记清零。 末尾 k10.rgb->write(-1, 0x000000) -1代表所有板载 RGB 灯,0x000000 为黑色,每次循环末尾熄灭彩灯; 效果:按键点亮彩灯,循环走到末尾自动关灯。 四、按键回调事件函数(触发式,不阻塞程序) A 键回调 onButtonAPressed () mind_n_okk = 1:修改状态标记,通知主循环播放生日歌; RGB 全部绿灯亮起,作为按键按下视觉提示。 B 键回调 onButtonBPressed () mind_n_okk = 2:修改状态标记,通知主循环播放自定义音符; RGB 全部蓝灯亮起,作为按键按下视觉提示。 五、整体运行逻辑与设计优点 完整运行流程 开机黑屏显示文字,无灯光、无声音; 按下 A:绿灯亮 → 等待 0.5s 播放生日快乐歌 → 播放结束灯光自动熄灭; 按下 B:蓝灯亮 → 等待 0.5s 播放一段单音旋律 → 播放结束灯光自动熄灭。 代码设计优势 回调分离思想 按键回调只改标记,播放、延时等耗时操作全部放在主循环,不在回调里写长延时,不会造成主板卡顿、按键失灵; 状态机控制 依靠单一变量区分两种功能,逻辑清晰,方便后续拓展更多按键功能; 硬件可视化反馈 按键对应不同颜色灯光,用户直观区分按下了哪个按键。 |
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed