如何从Arduino图形或与Arduino连接的处理软件中提取信息

时间:2018-08-26 10:00:48

标签: graph arduino processing arduino-uno

我正在使用AD8232心电图传感器,我需要PR间隔,OT间隔,R峰值等。我可以生成图形。但是从图中,我需要这些参数以编程方式提取。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

Arduino软件实际上部分基于处理-这就是开源项目的魅力。打开草图后,第一步就是导入序列库。转到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发送一个字符串(字符序列“ Hello,World!”),因此我们希望在处理中接收一个字符串。就像Arduino具有setup()和loop()一样,Processing也具有setup()和draw()(而不是循环)。

对于Processing中的setup()方法,我们将找到Arduino连接到的串行端口,并设置Serial对象以侦听该端口。

void setup()
{
  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)吗?好吧,如果我们不想谈论我所说的那种愚蠢的家伙,最好也将9600作为最后一个参数放在Processing的Serial对象中。这样,Arduino和处理以相同的速率进行通信。快乐的时光!

在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
}

Ta-Da!如果单击“运行”按钮(并且Arduino已插入上一页中的代码,则将弹出一个小窗口,几秒钟后,您将看到“ Hello,World!”)。出现在处理控制台中。一遍又一遍,很棒!现在,我们已经解决了如何将数据从Arduino发送到Processing。我们的下一步是弄清楚如何采取相反的方式-从Processing向Arduino发送数据。