3.1 Arduino -> Processing

本篇主要介紹如何由Arduino傳輸資料去Processing軟件,從而令Processing畫出來的動畫能與Arduino互動。

Arduino與Processing之間可以透過Serial串口溝通,以下為Arduino傳送資料到Processing和Processing傳至Arduino的基礎程式結構。

Arduino -> Processing

效果

Arduino以文字格式傳送三個數值給Processing,Processing讀取後,再分別放入陣列之中,然後列印出來。

電路圖

arduino

程式碼

Arduino:

Processing:

說明

上載完Arduino的程式後,開啟Arduino的serial監測器。確定Arduino每1秒鐘會出兩個數值,中間以逗號分隔(沒有空格)。

之後再運行Processing程式碼(運行前請先關閉Arduino的serial監測器,否則Processing會告訴你接口被佔用),一開始按run鍵時,通常會告訴你這句有錯:

這句是告訴Processing,哪個serial串口是接Arduino的,Processing上面的println(Serial.list());會列出所有的串口,如果是window電腦的話,會列出COMxx, COMxx等,確定哪一個是Arduino(去Arduino IDE看看上傳的序列埠就知道)。例如Processing列出的是:COM3 COM8 COM9,而你確定COM9是Arduino,那就將Serial.list()[0]改為Serial.list()[2]

整段SerialEvent函數中,每次Serial串口收到資訊就會運行,用一String字串去紀錄收到的字串,例如現在收到的是127,242

int data[] = int(split(myString, ',')); : split是把剛才收到的字串以逗記分隔開,再分別放入data[ ]這個陣列,所以現在data[0]127data[1]242

之後再把再個data[ ]列印出來。

動動腦

  1. 試在上面的例子 ,在Processing畫一個50x50的方型,其位置是剛才收到的x_positiony_position。(劃方型可參考這裡)

  2. 試接兩個可變電阻,用analogRead接收(參考這裡),把它照上面的方法在Arduino serial監視器列印出來。確定沒有錯後,再在Processing中,控制一個50x50的方型,用剛才的兩個可變電阻控制方型的位置。

    breadbroad