奇怪的随机数据从Arduino发送到Processing

时间:2008-11-01 23:09:53

标签: serial-port processing arduino

我正在尝试从光电管电阻器和我的Arduino Decimila读取数据,然后使用Processing实时绘制它。

应该是痛苦的简单;但它对我来说有点噩梦。

代码我在我的Arduino上运行:

int photoPin;

void setup(){

  photoPin = 0;
  Serial.begin( 9600 );

}

void loop(){

  int val = int( map( analogRead( photoPin ), 0, 1023, 0, 254 ) );
  Serial.println( val ); //sending data over Serial

}

代码我在Processing:

中运行
import processing.serial.*;

Serial photocell;

int[] yvals;

void setup(){

  size( 300, 150 );
  photocell = new Serial( this, Serial.list()[0], 9600 );
  photocell.bufferUntil( 10 );
  yvals = new int[width];

}

void draw(){

  background( 0 );
  for( int i = 1; i < width; i++ ){
    yvals[i - 1] = yvals[i];
  }

  if( photocell.available() > 0 ){
    yvals[width - 1] = photocell.read();
  }

  for( int i = 1; i < width; i++ ){
    stroke( #ff0000 );
    line( i, yvals[i], i, height );
  }
  println( photocell.read() ); // for debugging
}

我已经分别测试了两个代码,我知道它们有效。只有当我尝试从Arduino输入处理时才会出现问题。

当我在Arduino的“串行监视器”中查看数据时,我得到了一个看起来有效的恒定数据流。

但是当我通过Processing读取相同的数据时,我得到了一个重复的随机值模式。

HALP?

2 个答案:

答案 0 :(得分:4)

仔细观察手头的资源后,我意识到问题已经由http://arduino.cc

的人解决了。
  

http://arduino.cc/en/Tutorial/Graph

如果我早些时候见过那么,我可以节省多少时间。

答案 1 :(得分:2)

您可以使用Plotly Arduino API传输该数据,并提供文档和设置here。基本思路:您可以连续从Arduino流式传输数据,或传输单个块。

然后,如果您想将其嵌入网站,您需要获取网址并使用此代码段:

<iframe id="igraph" src="https://plot.ly/~abhishek.mitra.963/1/400/250/" width="400" height="250" seamless="seamless" scrolling="no"></iframe>

您可以更改该代码段中的宽度/高度尺寸。注意:您需要在那里交换自己的URL以使其流过。

Here's an example of how it looks to stream Arduino data

enter image description here

完全披露:我为Plotly工作。