惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
博客园 - Franky
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
D
Docker
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
H
Help Net Security
B
Blog
宝玉的分享
宝玉的分享

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
MicroBlocks 编程案例: 创建 AI 摄像头库
种瓜 · 2022-01-26 · via 夜行人

文章目录

前言

上文, 火星资源挑战赛使用了 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里就会添加这个支持。

参考