也许,你已经用 Arduino 来闪烁 LED,也许你甚至用 Processing 处理了一些漂亮的照片,那么,他们的下一步是什么?
在这里,您可能会想,“我想知道有没有办法让 Arduino 和 Processing 进行交流?” 那么,猜猜这里有什么!是的,本教程将向您展示如何连接 Arduino 与 Processing。
在本教程中,我们将学习:
在开始之前,请确认你已经熟悉下面的一些内容,以便充分利用本教程:
让我们先从 Arduino 开始。我们将向您展示如何设置 Arduino 程序的基本步骤,以便能通过串口发送信息。
好了。您应该在已经安装了 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!” 字符串。
我们现在的任务是,找到一种方式来监听我们的 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!
优秀! 我们现在征服了如何将数据从 Arduino 发送数据到 Processing。我们的下一步就是找出相反的方式 - 从 Processing 到 Arduino 发送数据。
原文链接:https://learn.sparkfun.com/tutorials/connecting-arduino-to-processing
观光\评论区