说明

这是之前的文章,更新以匹配 CodeLab Adapter 3.0


陆续有开发者问到,如何使用CodeLab Adapter将Arduino接入到Scratch3.0中?

思路

有许多种方法能做到这点,但我比较偏好在arduino中烧入Firmata固件。之后与固件交互,我在两种硬件编程风格的比较论述了这样做的好处。

之后使用Firmata python client与Arduino交互。

推荐的Firmata python client有:

如何设计出合理的积木是个非常有趣的话题,它本质上是个设计工作,而不是技术工作。我推荐采用"单一入口原则"(来自realtalk的建议)。这个原则对于构建创造性工具极有帮助。 在本文中展示如何使用这个原则来将Arduino接入到Scratch3.0。

我对Firmata并不熟悉。 所以后文里,直接使用pyserial与arduino通信。Firmata python client包转了pyserial。

技术视角

让我们切换到技术视角,看看按照上边的思路,我们具体要做些什么。

  1. 在Scratch3.0中创建Arduino extension
  2. CodeLab Adapter中构建extension_arduino

如果你没有在Scratch3.0中创建过插件,请先阅读创建你的第一个Scratch3.0 Extension

本文准备采用"单一入口原则",所以Scratch3.0中的Arduino extension与CodeLab Adapter之间将直接传递Python代码,语义的传递过程为:积木->Python代码, 之后由extension_arduino负责运行代码。

在Scratch3.0中创建Arduino extension

我目前只构建了一个控制led的积木,作为演示,添加更多积木,依葫芦画瓢便可。

演示

内置插件

本文只是讲解了思路,目前 Adapter 内置了 Arduino uno插件