Arduino与Scratch3.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的积木,作为演示,添加更多积木,依葫芦画瓢便可。

源码在scratch3_arduino

codelab-adapter中构建extension_arduino

源码见extension_arduino.py

codelab-adapter与Arduino的连接,我只写了在Ubuntu下如何建立,如果你希望在windows下使用它,需要修改一下代码,去发现你的arduino设备。

演示




Fork me on GitHub