【花雕动手做】行空板 K10 系列实验之带提示音的全功能数码照相机
行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。
主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好
主打:音频录放模块
相关说明
辅助:屏幕显示相关积木
LED控制模块
【花雕动手做】行空板 K10 系列实验之带提示音的全功能数码照相机
实验开源代码
// 引入行空板K10全套硬件驱动库,集成屏幕、按键、摄像头、SD卡、音频、RGB彩灯功能#include"unihiker_k10.h"// 状态计数全局变量,volatile修饰:回调函数修改,防止编译器缓存优化,主逻辑实时读取数值volatilefloatmind_n_ABC;// A按键按下回调函数前置声明,setup中绑定按键事件需要提前告知编译器voidonButtonAPressed();// 实例化行空板主硬件对象,所有硬件操作统一通过k10调用UNIHIKER_K10 k10;// 音频播放对象,用于拍摄、保存、预览时播放提示音调Music music;// 屏幕显示方向参数2,可修改0/1/2/3切换屏幕翻转角度uint8_tscreen_dir=2;// 上电/复位仅执行一次初始化函数voidsetup(){// 初始化行空板底层总线、摄像头、屏幕、I2C等硬件k10.begin();// 为A按键绑定按下触发回调函数,按下A自动执行onButtonAPressedk10.buttonA->setPressedCallback(onButtonAPressed);// 按照设定方向初始化显示屏k10.initScreen(screen_dir);// 初始化摄像头画面背景渲染功能,开启摄像头底层驱动k10.initBgCamerImage();// 默认关闭摄像头实时预览画面k10.setBgCamerImage(false);// 创建屏幕绘图缓存画布,绘图先写入缓存再统一刷新,避免屏幕闪烁k10.creatCanvas();// 初始化TF卡文件系统,照片存储、读取图片必须依赖此函数k10.initSDFile();// 设置屏幕底色为纯黑色k10.setScreenBackground(0x000000);// 画布第3行浅粉色打印实验标题k10.canvas->canvasText("行空板K10系列实验",3,0xFFCCCC);// 画布第5行浅黄色打印功能副标题k10.canvas->canvasText(" 带提示音的照相机",5,0xFFFF99);// 画布第7行浅紫色打印操作提示文字k10.canvas->canvasText(" 按A键打开相机",7,0xCCCCFF);// 将缓存中所有文字刷新到实体屏幕完成显示k10.canvas->updateCanvas();// 设置RGB彩灯全局亮度为9,亮度区间0~255,数值越小灯光越柔和k10.rgb->brightness(round(9));}// 主循环,本实验全部拍摄逻辑放在按键回调内,loop无额外执行代码voidloop(){}// A按键按下触发回调函数,每按一次自动执行一次,实现三段式相机功能切换voidonButtonAPressed(){// 每按一次A,计数变量自增1,用来区分三种相机状态mind_n_ABC+=1;// 计数对3取余=1:第一阶段——开启摄像头实时取景if((((int32_t(mind_n_ABC))%(int32_t(3)))==1)){// 播放247Hz音调,持续4000ms,取景提示音music.playTone(247,4000);// 开启摄像头背景实时画面,屏幕显示摄像头取景画面k10.setBgCamerImage(true);// 刷新画布同步画面k10.canvas->updateCanvas();// 第1颗RGB灯亮绿色,代表取景模式k10.rgb->write(1,0x00FF00);}// 计数对3取余=2:第二阶段——拍摄照片并保存到TF卡else{if((((int32_t(mind_n_ABC))%(int32_t(3)))==2)){// 播放330Hz拍照快门提示音music.playTone(330,4000);// 截取当前摄像头画面,保存为bmp图片至TF卡根目录photo.bmpk10.photoSaveToTFCard("S:/photo.bmp");// 画布第9行白色文字提示照片保存成功k10.canvas->canvasText(" 已保存照片",9,0xFFFFFF);k10.canvas->updateCanvas();// 第1颗RGB灯亮红色,代表已完成拍摄保存k10.rgb->write(1,0xFF0000);// 关闭摄像头实时取景画面k10.setBgCamerImage(false);}// 计数对3取余=0:第三阶段——全屏读取并预览保存好的照片else{if((((int32_t(mind_n_ABC))%(int32_t(3)))==0)){// 清空画布所有原有文字、画面k10.canvas->canvasClear();// 播放523Hz预览提示音music.playTone(523,4000);// 在画布坐标(0,0)全屏绘制TF卡内photo.bmp照片k10.canvas->canvasDrawImage(0,0,"S:/photo.bmp");k10.canvas->updateCanvas();// 第1颗RGB灯亮蓝色,代表图片预览模式k10.rgb->write(1,0x0000FF);// 阻塞延时3秒,保持图片预览界面delay(3000);// 3秒后清空画布,回到初始黑屏文字界面k10.canvas->canvasClear();}}}}代码解读
一、头文件、全局变量与对象
#include"unihiker_k10.h"引入行空板 K10 集成驱动库,内置屏幕、按键、板载摄像头、TF 卡文件系统、音频、RGB 彩灯全套硬件驱动。
volatilefloatmind_n_ABC;作用:三段模式状态计数器,每按一次 A 键数值 + 1;
volatile关键字:变量在按键回调函数中修改,阻止编译器缓存优化,保证数值实时更新;
通过对 3 取余实现循环切换三种相机功能。
voidonButtonAPressed();按键回调函数前置声明,用于给 A 按键绑定触发事件,编译器提前识别该函数。
UNIHIKER_K10 k10;行空板核心硬件对象,摄像头、屏幕、SD 卡、灯光、按键全部依靠该对象操作。
Music music;音频对象,取景、拍照、预览三个阶段分别播放不同音调做状态提示音。
uint8_tscreen_dir=2;屏幕旋转参数,可选 0/1/2/3,2 为当前屏幕显示朝向。
二、setup () 上电初始化(仅执行 1 次)
k10.begin():初始化主板底层所有硬件总线;
setPressedCallback(onButtonAPressed):给 A 按键绑定按下回调,按下 A 自动执行回调函数,不受 delay 阻塞;
initScreen(screen_dir):按指定方向初始化显示屏;
initBgCamerImage():初始化摄像头背景预览底层驱动;
setBgCamerImage(false):开机默认关闭摄像头实时画面;
creatCanvas():创建屏幕绘图缓存,绘图先存入缓存再统一刷新,消除闪屏;
initSDFile() 关键函数:初始化 TF 卡系统,不调用无法保存、读取照片;
setScreenBackground(0x000000):屏幕底色设黑色;
canvasText():在固定行打印彩色开机提示文字,介绍实验功能与操作方式;
updateCanvas():把缓存文字刷新到实体屏幕;
rgb->brightness(9):设置 RGB 彩灯全局亮度。
三、loop () 主循环
函数内部为空,所有拍摄、预览、存储逻辑全部放在按键回调里,不需要轮询检测按键。
四、按键回调核心逻辑 onButtonAPressed()
每按下一次 A 键,计数mind_n_ABC += 1,通过 数值 % 3 循环切换 3 种模式,循环顺序:取景 → 拍照保存 → 图片预览。
余数 = 1 取景模式(第一次按 A)
播放 247Hz 长提示音;
开启摄像头实时画面投屏到屏幕;
第 1 颗 RGB 绿灯亮起,代表实时取景状态。
余数 = 2 拍照存储(第二次按 A)
播放 330Hz 快门提示音;
截取当前摄像头画面,保存为S:/photo.bmp覆盖 TF 卡旧照片;
屏幕打印文字提示 “已保存照片”;
RGB 红灯亮起,关闭摄像头实时画面。
余数 = 0 图片预览(第三次按 A)
清空屏幕所有文字与画面;
播放 523Hz 预览提示音;
在屏幕左上角全屏读取 TF 卡内photo.bmp显示;
RGB 蓝灯亮起;
delay(3000) 阻塞停留 3 秒,之后清空画布回到开机文字界面。
第四次按下 A,计数取余再次等于 1,重新进入取景模式,无限循环。
四、整体运行流程
硬件必备:行空板 K10、板载摄像头、插入 TF 内存卡
开机黑屏,显示相机实验介绍文字;
第 1 次按 A:屏幕实时显示摄像头画面,绿灯;
第 2 次按 A:抓拍画面存入 TF 卡,屏幕提示保存,红灯;
第 3 次按 A:全屏展示刚拍摄的照片,蓝灯,停留 3 秒自动清屏;
重复按压 A,循环切换三个功能。
案例特点
采用按键回调触发,非轮询检测,响应灵敏;
三段式状态机设计,单按键完成取景、拍照、预览全部功能;
灯光 + 提示音 + 文字三重状态提示,交互直观。
Mind+图形编程
实验场景图与视频记录
【【花雕动手做】行空板 K10 系列实验之带提示音的全功能数码】
https://www.bilibili.com/video/BV19njG6NEpr/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987
K10实验之带提示音的全功能数码照相机
