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