【花雕动手做】行空板 K10 系列实验之带提示音的全功能数码照相机
行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板100%采用国产芯片知识产权自主可控符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源教学过程中无需额外连接其他设备便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。主要特点集成摄像头内置算法可进行离线图像检测集成麦克风内置算法可进行离线语音识别集成扬声器内置算法可进行离线语音合成2.8寸彩色屏幕数据展示更清晰集成度高利于教学接口丰富兼容软件多扩展性好主打音频录放模块相关说明辅助屏幕显示相关积木LED控制模块【花雕动手做】行空板 K10 系列实验之带提示音的全功能数码照相机实验开源代码// 引入行空板K10全套硬件驱动库集成屏幕、按键、摄像头、SD卡、音频、RGB彩灯功能#includeunihiker_k10.h// 状态计数全局变量volatile修饰回调函数修改防止编译器缓存优化主逻辑实时读取数值volatilefloatmind_n_ABC;// A按键按下回调函数前置声明setup中绑定按键事件需要提前告知编译器voidonButtonAPressed();// 实例化行空板主硬件对象所有硬件操作统一通过k10调用UNIHIKER_K10 k10;// 音频播放对象用于拍摄、保存、预览时播放提示音调Music music;// 屏幕显示方向参数2可修改0/1/2/3切换屏幕翻转角度uint8_tscreen_dir2;// 上电/复位仅执行一次初始化函数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_ABC1;// 计数对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();}}}}代码解读一、头文件、全局变量与对象#includeunihiker_k10.h引入行空板 K10 集成驱动库内置屏幕、按键、板载摄像头、TF 卡文件系统、音频、RGB 彩灯全套硬件驱动。volatilefloatmind_n_ABC;作用三段模式状态计数器每按一次 A 键数值 1volatile关键字变量在按键回调函数中修改阻止编译器缓存优化保证数值实时更新通过对 3 取余实现循环切换三种相机功能。voidonButtonAPressed();按键回调函数前置声明用于给 A 按键绑定触发事件编译器提前识别该函数。UNIHIKER_K10 k10;行空板核心硬件对象摄像头、屏幕、SD 卡、灯光、按键全部依靠该对象操作。Music music;音频对象取景、拍照、预览三个阶段分别播放不同音调做状态提示音。uint8_tscreen_dir2;屏幕旋转参数可选 0/1/2/32 为当前屏幕显示朝向。二、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_sourcecopy_webvd_source371a292a55e5ca9be994cbb4a86cc987K10实验之带提示音的全功能数码照相机