创客机器人实战:基于Arduino和树莓派
上QQ阅读APP看书,第一时间看更新

3.5 Arduino和Processing的交互

如果想让在计算机中设计的艺术作品与外部物理世界进行互动,让作品能与人和物产生“对话”,就需要使用传感器把外部环境的信息,采集到计算机中处理。要做到这一点,目前通常的方法是通过Arduino控制器把传感器数据,通过串口通信,读到上位机软件Processing里,然后通过处理,让Processing数位作品的某些特征与传感器数据产生关联。于是物理世界的环境数据发生变化时,也会使虚拟数字世界的作品随之互动,不断幻化出动态语义的奇妙画面。

Arduino和Processing可以作为交互媒体艺术的两个主要部分,各自承担着不同的角色。

作为一个交互作品,传感器是一个输入的感知器件,感知器件通过Arduino模块将各种物理量变换成数据传给计算机,计算机再去处理各类事件,形成交互过程。传感器+Arduino可以说是交互系统的“输入”端。

Processing在交互系统中充当“表达”角色,Processing起源于数据可视化,经过进化加入了很多多媒体处理能力,因此它不仅可以用图形来表达,也可以用处理视频、声音来表达。因此在交互系统中,Processing的角色是“信号处理”和“输出”。

传感器+Arduino+Processing+投影+音箱可以构成一个完整的媒体交互艺术的系统。

下面是一个简单的测试程序。

Arduino部分的代码如下:

Processing程序部分:

从Processing下面的小黑窗中可以看到收到的数据是否正确。

假设Arduino的x=0或x=1可以看成仿真开关情况,收到的数据“0”或“1”可以模仿开关的“开”或“关”。

需要注意以下事项:

(1)Arduino调试程序使用的是Serial.print()和Serial.println()语句,联合使用Arduino和Processing要改为Serial.write()语句。Serial.print()和Serial.write()不要同时使用。

(2)在Processing上输入简单的测试程序,需要注意使用同样的COM口和同样的波特率。