也許,你已經用Arduino 來閃爍LED,也許你甚至用Processing 處理了一些漂亮的照片,那麼,他們的下一步是什麼?
在這裡,您可能會想,“我想知道有沒有辦法讓Arduino 和Processing 進行交流?” 那麼,猜猜這裡有什麼!是的,本教程將向您展示如何連接Arduino 與Processing。
在本教程中,我們將學習:
- 如何從Arduino 通過串口發送數據到Processing
- 如何從Processing 中接收Arduino 的數據
- 如何從Processing 向Arduino 發送數據
- 如何從Arduino 接收Processing 中的數據
- 如何在Arduino 和Processing 之間編寫串行“握手” 來控制數據流
- 如何使用模擬傳感器來控制槳的“乒乓球” 遊戲
在開始之前,請確認你已經熟悉下面的一些內容,以便充分利用本教程:
- 什麼是Arduino?
- 如何使用麵包板
- 使用電線
- 什麼是串口通訊?
- 基本熟悉Processing,但不是絕對必要的。
步驟1:From Arduino...
讓我們先從Arduino 開始。我們將向您展示如何設置Arduino 程序的基本步驟,以便能通過串口發送信息。
- 第一件事,如果你還沒有下載並安裝適用於您的操作系統的Arduino 軟件,請下載它。
- 您還需要一個Arduino 兼容的微控制器,並將其連接到計算機(一個AB USB 數據線,微型USB 或FTDI 板)的適當方式。
好了。您應該在已經安裝了Arduino 軟件、擁有某種Arduino 板和一根數據線。現在開始編碼!別擔心,這很簡單。
打開Arduino 軟件。然後在白色區域輸入以下的內容:
void setup()
{
//initialize serial communications at a 9600 baud rate
Serial.begin(9600);
}
這被稱為我們的安裝方法。我們在這裡設置了我們的程序。在這裡,我們正在使用它來開始從Arduino 到我們的計算機的串行通信,波特率為9600。現在,您現在所需要知道的是波特率(基本上),這是我們發送數據的速率到計算機,如果我們以不同的速率發送和接收數據,一切都會變成gobbledy-gook,一方不能理解另一個。這不好。
在我們的
setup()方法之後,我們需要一個名為loop()的方法,只要我們的程序運行,它將重複運行。對於我們的第一個例子,我們將通過串行端口一遍又一遍地發送字符串“Hello,world!”。在您的Arduino程序中鍵入以下代碼:void loop()
{
//send 'Hello, world!' over the serial port
Serial.println("Hello, world!");
//wait 100 milliseconds so we don't drive ourselves crazy
delay(100);
}
這就是我們第一個例子中,以上是Arduino 所需要的代碼。我們正在從Arduino 設置串行通信,並告訴它每100 毫秒發送一次數據。
現在,所要做的就是插入您的Arduino 板,選擇您的主板類型(在Tools -> Board 裡)和串行端口(在Tools - > Serial Port 下),然後點擊“Upload” 按鈕將代碼加載到Arduino的。
現在,我們準備好看看我們是否可以神奇地(或通過代碼)檢測我們從Processing 發送的“Hello,world!” 字符串。
步驟2:...to Processing
我們現在的任務是,找到一種方式來監聽我們的Arduino 程序發送的數據。幸運的是,Processing 提供了一個專為這種事情設計的串行庫!如果您的Processing 版本沒有這個庫,請從processing.org 網站上,依據你的操作系統下載最新版本。一旦安裝了Processing,打開它。
看起來很像Arduino,嗯?這其中的原因是,Arduino 軟件的一部分是基於Processing,這就是開源項目的優點。一旦我們有一個打開的程序,我們的第一步是導入串行庫。轉到Sketch -> Import Library -> Serial。
現在,你在程序的開頭應該看到一行,諸如
import processing.serial.*的代碼。在我們的import語句下,我們需要聲明一些全局變量。所有這些意味著,這些變量可以在我們的程序中的任何地方使用。在import語句下方添加這兩行:Serial myPort; // Create object from Serial class
String val; // Data received from the serial port
為了監聽任何串行通信,我們必須得到一個Serial對象(我們稱之為
myPort,但您可以隨意選擇)。這樣可以讓我們在計算機上的串口上,監聽任何傳入的數據。我們還需要一個變量,來接收實際的數據。在這種情況下,由於我們要從Arduino發送一個String(字符序列Hello,World!),我們希望在Processing中接收一個String。就像Arduino有setup()和loop(),Processing有setup()和draw()(而不是loop)。
對於Processing中的
setup()方法,我們將找到我們的Arduino連接的串行端口,並設置我們的Serial對象來監聽該端口。void setup()
{
// I know that the first port in the serial list on my mac
// is Serial.list()[0].
// On Windows machines, this generally opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your port
myPort = new Serial(this, portName, 9600);
}
記住我們是如何在Arduino中設置
Serial.begin(9600)?那麼,如果我不想讓討論的那個gobbledy-gook,我們最好把9600作為Processing中的Serial對象的最後一個參數。這樣Arduino和Processing以相同的速度進行通信。Happy Times!
在我們的
draw()循環中,我們將在我們的串行端口上監聽,我們將得到一些東西,把它放在我們的val變量中,並將它打印到控制台(Processing程序底部的黑色區域)。void draw()
{
if ( myPort.available() > 0)
{ // If data is available,
val = myPort.readStringUntil('\n'); // read it and store it in val
}
println(val); //print it out in the console
}
噹噹!如果您點擊“Run” 按鈕(您的Arduino 已插入上一頁的代碼),您應該會看到一個小窗口彈出窗口,一秒鐘後,您將看到“Hello,World!” 出現在Processing 控制台。一遍又一遍。如下:
null
null
Hello, world!
Hello, world!
步驟3:結論
優秀!我們現在征服瞭如何將數據從Arduino 發送數據到Processing。我們的下一步就是找出相反的方式- 從Processing 到Arduino 發送數據。
原文鏈接:https://learn.sparkfun.com/tutorials/connecting-arduino-to-processing
https://www.wandianshenme.com/play/arduino-processing-communication-part-1-processign-receive-arduino-data/
https://www.wandianshenme.com/play/arduino-processing-communication-part-1-processign-receive-arduino-data/
https://www.wandianshenme.com/play/arduino-processing-communication-part-1-processign-receive-arduino-data/
https://www.wandianshenme.com/play/arduino-processing-communication-part-1-processign-receive-arduino-data/

留言
張貼留言