2008-11-01 33 views
4

我试图从一个光电管电阻和我的Arduino Decimila读取数据,然后用Processing进行实时图形化处理。从Arduino发送奇怪的随机数据到处理

应该是痛苦的简单;但它对我来说成长为一场噩梦。

代码,我在我的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 

} 

代码我运行在处理:

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输入Processing时,问题才会开始。

当我在Arduino的“串行监视器”中查看数据时,我得到一个很好的持续数据流,似乎看起来有效。

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

Halp?

回答

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> 

您可以在片段更改宽度/高度尺寸。注意:您需要在那里交换自己的网址以使其通过。

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

enter image description here

全面披露:我为Plotly工作。

+0

这实际上很酷。谢谢。 – 2014-10-02 22:44:11