2017年7月5日 星期三

[ pd 數值傳送到 Arduino ] & 水龍頭 [ spigot ]

(代po同學遲po的FangJing教學文!抱歉遲了!)

嗨,我是北藝學生FangJing,在這裡跟大家分享從阿亂老師那獲得的的小知識,pd傳訊號到arduino的方法,以及pd裡 spigot 的功能。

——————————————————————

[ pd 數值傳送到 Arduino ] 
假定目的:讓led隨著pd裡的metro亮暗。

Arduino
首先要在Arduino的部分加上以下的程式碼:

1.
宣告一個整數(int) pdin,預設為10 (後面會說明,10為自己設定的數值,目的為讓led燈暗。) 

2.
在 loop() 的部分增加以下程式碼: 
(pink)
讓arduino判斷是否有數值傳入
“ Serial.available() > 0 “ 判斷 如果這個溝通管道有收到數值的話,就讀取它放進 pdin 裡頭。

(blue)
判斷讀入的數值執行相對應的動作
設定收到的數值如果為11,led燈亮,為10或非11的數值時(else),led燈暗。



Pure Data
接著是pd的部分: 


(增加部分為紅色部分,藍色部分的說明可以參照前幾篇文章。)
在metro下方增加object “t b b“ (trigger bang bang),當metro 送“0”時啟動左邊bang,送“1”時啟動右邊bang,並將數值連接回 comport,arduino就能夠讀取到pd的數值了。

p.s. [ 關於設定值 10 & 11 ]
這個數值是自己訂定的,也可以改成任何0與1以外的數值,pd會隨著metro的數值傳送10與11到arduino,讓arduino判斷收到10的時候暗,收到11的時候亮,以達到led燈跟著metro閃爍的效果。




p.s.s.  [ object  “spigot”  的用法 ]
以下圖狀況為例,綠色bang觸發時不會引發spigot下方的動作,除非綠色bang觸發時符合spigot右方的條件,數值才會通過,執行spigot下方接連的部分。

也就是說,spigot右方入口為通過條件,左方入口為欲通過的數值,符合條件才會通過並執行下方的程式。