专注电子技术学习与研究
当前位置:单片机教程网 >> Arduino >> 浏览文章

Arduino与PureData通信(上篇)

作者:StormerZ   来源:StormerZ   点击数:  更新时间:2014年06月17日   【字体:

维基百科:
Pure Data(或称作PD)是 Miller Puckette 在90年代为创造交互的计算机音乐和多媒体作品而开发的视觉化程式设计语言。虽然 Puckette 是 Pd 的主要作者,但是它是一个多数开发者为起开发新扩展的开放源代码项目。它以一个类似于 BSD许可证 类似许可证下发行,可运行在 GNU/Linux, Mac OS X, iOS, Android 和 Windows。

 
下面是官网对PD的介绍说明:
Pure Data (or Pd) is a real-time graphical programming environment for audiovideo, andgraphical processing. Pure Data is commonly used for live music performance, VeeJaying, sound effects, composition, audio analysis, interfacing with sensors, using cameras, controlling robots or even interacting with websites.  Because all of these various media are handled as digital data within the program, many fascinating opportunities for cross-synthesis between them exist. Sound can be used to manipulate video, which could then be streamed over the internet to another computer which might analyze that video and use it to control a motor-driven installation.

OK,下面来介绍一下PD与ARDUINO之间通过串口通信实现控制的方法。

在这一篇里,我用一个操作LED亮度的例子做说明。


目标:通过串口连接ARDUINO与PD,在PD里发送控制信号给ARDUINO,以实现对LED灯的明暗控制。

 

设备:ARDUINO UNO、两根杜邦线、一个发光LED、一个电阻。

软件:PD 0.45.4, ARDUINO官方IDE。

软件的设置:PD默认是不带有串口通信功能的,所以你需要先安装一个扩展。
1、你可以通过官网下载这个扩展的最新源代码,自己编译:http://puredata.info/downloads/comport/releases/0.2/?searchterm=comport
2、直接下载我提供的这个扩展文件comport.dll;
3、将编译好的comport.dll拷贝到PD安装目录下的extra文件夹下。


下面是具体的步骤,放轻松,实际上整个过程非常简单。

【ARDUINO部分】

首先,把ADUINO和LED连接好,接线如下图,两根杜邦线分别插在pin9和GND上,另一边接到发光LED的正负极就行了,为了保护LED不会过亮而烧坏,最好加一个电阻,我用的是一个1K的可调电阻。如果没有可调电阻用一个1K以内阻值的电阻就可以。
 
 
接下来编写ARDUINO部分的代码:
 
 
int incomingByte = 0;  //用来保存PD发送过来的数据
int led = 9; 
 
void setup() 
{
    Serial.begin(9600);  // 打开串口并设置通讯速率为9600
 
    pinMode(led, OUTPUT);  //设置pin9为输出模式
}
 
void loop() 
{
 
  if (Serial.available() > 0)  //如果串口中有数据则获取
  {
    //读取从串口得到的值
    incomingByte = Serial.read();
    
    //将读取的值输出到pin9(这样就实现了PD端控制LED的亮度)
    analogWrite(led, incomingByte); 
  }
}
 
到这里ARDUINO端就都准备好了,下面来介绍如何设置PD。
 
 
 
 
【PD部分】
 
打开PD,点击主菜单File->New,新建一个PD文件。
 
在新建的文件窗口中,点击主菜单put->object,这样来新建一个对象。
 
在这个新建的对象中,填写 comport 3 9600
 
comport 是对象名称, 3 是ARDUINO主板使用的串口编号(这里要注意,这个数字是从0开始计数的,也就是说,你想使用COM4端口,这里就需要写数字3), 9600是通信速率。这里的端口号和通讯速率都要跟ARDUINO保持一致。
 
 
如果这一步没有成功,可能有3个原因:
1、PD的comport.dll扩展没有安装,或者拷贝的目录不正确;
2、你所选用的串口当前正在被使用;
3、串口的编号没有填写对。
 
 
最后一步,添加一个滑动条,设置滑动条的范围0~255.
 
在主菜单中点击Put->Vslider,添加一个纵向的滑条。
 
在滑动条上右键->属性,参数设置如下:
 
点击OK。鼠标指向滑动条的右下角,鼠标会变成一圆圈,这个时候单击并拖拽,拉一条连线到 comport对象。
 
 
 
好了,到这里就可以说大功告成了。使用快捷键CTRL+E,来关闭PD的编辑模式,你会发现这个时候窗口内的对象都不再可以编辑了,滑动条也变得可以使用了。如果想修改,还通过这个快捷即可再次切换回编辑状态。
 
现在拖拽滑动条,你会发现连接到ARDUINO的LED灯亮度会随之变化。也就说明ARDUINO已经成功接收了从PD发送过来的数据。
 
本篇就介绍到这里了,下一篇我会继续写一个使用ARDUINO来控制PD的例子。
 
 
希望你一切都顺利,HAVE FUN~ 
关闭窗口

相关文章