維基百科:
Pure Data(或稱作PD)是 Miller Puckette 在90年代為創(chuàng)造交互的計(jì)算機(jī)音樂和多媒體作品而開發(fā)的視覺化程式設(shè)計(jì)語言。雖然 Puckette 是 Pd 的主要作者,但是它是一個(gè)多數(shù)開發(fā)者為起開發(fā)新擴(kuò)展的開放源代碼項(xiàng)目。它以一個(gè)類似于 BSD許可證 類似許可證下發(fā)行,可運(yùn)行在 GNU/Linux, Mac OS X, iOS, Android 和 Windows。
下面是官網(wǎng)對PD的介紹說明:
Pure Data (or Pd) is a real-time graphical programming environment for audio, video, 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之間通過串口通信實(shí)現(xiàn)控制的方法。
在這一篇里,我用一個(gè)操作LED亮度的例子做說明。
目標(biāo):通過串口連接ARDUINO與PD,在PD里發(fā)送控制信號給ARDUINO,以實(shí)現(xiàn)對LED燈的明暗控制。
設(shè)備:ARDUINO UNO、兩根杜邦線、一個(gè)發(fā)光LED、一個(gè)電阻。
軟件:PD 0.45.4, ARDUINO官方IDE。
軟件的設(shè)置:PD默認(rèn)是不帶有串口通信功能的,所以你需要先安裝一個(gè)擴(kuò)展。
1、你可以通過官網(wǎng)下載這個(gè)擴(kuò)展的最新源代碼,自己編譯:http://puredata.info/downloads/comport/releases/0.2/?searchterm=comport;
2、直接下載我提供的這個(gè)擴(kuò)展文件comport.dll;
3、將編譯好的comport.dll拷貝到PD安裝目錄下的extra文件夾下。
下面是具體的步驟,放輕松,實(shí)際上整個(gè)過程非常簡單。
【ARDUINO部分】
首先,把ADUINO和LED連接好,接線如下圖,兩根杜邦線分別插在pin9和GND上,另一邊接到發(fā)光LED的正負(fù)極就行了,為了保護(hù)LED不會過亮而燒壞,最好加一個(gè)電阻,我用的是一個(gè)1K的可調(diào)電阻。如果沒有可調(diào)電阻用一個(gè)1K以內(nèi)阻值的電阻就可以。
接下來編寫ARDUINO部分的代碼:
int incomingByte = 0; //用來保存PD發(fā)送過來的數(shù)據(jù)
int led = 9;
void setup()
{
}
void loop()
{
}
到這里ARDUINO端就都準(zhǔn)備好了,下面來介紹如何設(shè)置PD。
【PD部分】
打開PD,點(diǎn)擊主菜單File->New,新建一個(gè)PD文件。
在新建的文件窗口中,點(diǎn)擊主菜單put->object,這樣來新建一個(gè)對象。
在這個(gè)新建的對象中,填寫 comport 3 9600
comport 是對象名稱, 3 是ARDUINO主板使用的串口編號(這里要注意,這個(gè)數(shù)字是從0開始計(jì)數(shù)的,也就是說,你想使用COM4端口,這里就需要寫數(shù)字3), 9600是通信速率。這里的端口號和通訊速率都要跟ARDUINO保持一致。
如果這一步?jīng)]有成功,可能有3個(gè)原因:
1、PD的comport.dll擴(kuò)展沒有安裝,或者拷貝的目錄不正確;
2、你所選用的串口當(dāng)前正在被使用;
3、串口的編號沒有填寫對。
最后一步,添加一個(gè)滑動條,設(shè)置滑動條的范圍0~255.
在主菜單中點(diǎn)擊Put->Vslider,添加一個(gè)縱向的滑條。
在滑動條上右鍵->屬性,參數(shù)設(shè)置如下:
點(diǎn)擊OK。鼠標(biāo)指向滑動條的右下角,鼠標(biāo)會變成一圓圈,這個(gè)時(shí)候單擊并拖拽,拉一條連線到 comport對象。
好了,到這里就可以說大功告成了。使用快捷鍵CTRL+E,來關(guān)閉PD的編輯模式,你會發(fā)現(xiàn)這個(gè)時(shí)候窗口內(nèi)的對象都不再可以編輯了,滑動條也變得可以使用了。如果想修改,還通過這個(gè)快捷即可再次切換回編輯狀態(tài)。
現(xiàn)在拖拽滑動條,你會發(fā)現(xiàn)連接到ARDUINO的LED燈亮度會隨之變化。也就說明ARDUINO已經(jīng)成功接收了從PD發(fā)送過來的數(shù)據(jù)。
本篇就介紹到這里了,下一篇我會繼續(xù)寫一個(gè)使用ARDUINO來控制PD的例子。
希望你一切都順利,HAVE FUN~