MicroBlocks 编程案例: 创建 AI 摄像头库
文章目录
前言
接上文, 火星资源挑战赛使用了 AI 摄像头: AILens
于是我打算将其接入 MicroBlocks。
思路
AILens 相关的 MicroPython 驱动代码,都在 Github 上: PlanetX_MicroPython/AILens.py
我试着将这些代码翻译到 MicroBlcoks,和之前的几篇文章思路一样。
在 MicroBlocks 里的编程,十分愉快。 由于已经熟悉了对 I2C 设备编程,轻车熟路 ,完成 AILens 的驱动可能不到 1 小时。
我已经将驱动提交给了官方
演示
尝鲜
愿意尝鲜的同学可以下载使用它: AILens.ubl
可以从这里加载自定义的代码库:
编写代码库(library)的技巧
在 MicroBlocks 里编写代码库非常简单。
初始化
在 MicroBlocks 里,我们只能将自定义积木导出为代码库(library), 所以「当启动时积木」不会被到导出代码库里。
这带来一个问题,一些需要初始化的代码怎么办呢? 这类代码往往有个特征: 只需要初始化一次。类似 Python class 里的 __init__
函数。
初始化的技巧是通用的,技巧如下:
(ps: 图中初始化代码做了简化处理)
setup
自定义积木,一般配合一个变量使用:initialized
, 通过这个变量来记忆是否是第一次操作(一开始变量是 0)。 值得之一的是 setup 幂等函数。 这样你可以把setup
放到任何地方(确保其他代码运行之前先运行setup),不必担心多次掉用它。
这些技巧我也是通过「显示积木定义」学来的 : )
下拉框
AILens 代码库里,switch mode
积木使用了下拉框
目前无法在 IDE 里添加下拉框类型的输入。我是直接修改文本代码做到的(通过学习其他 library 的代码)。
但我不喜欢在文本里编程,我的做法是,在 MicroBlocks图形环境里,大体完成自定义积木后
再在文本环境里微调:
(与 Scratch 插件里的做法类似)
相信未来图形IDE里就会添加这个支持。
参考
文章作者 种瓜
上次更新 2022-01-26