我正在尝试从光电管电阻器和我的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的输入到Processing时才会出现问题 .
当我在Arduino的“串行监视器”中查看数据时,我得到了一个看似有效的恒定数据流 .
但是当我通过Processing读取相同的数据时,我得到了一个随机值的重复模式 .
HALP?
2 回答
您可以使用Plotly Arduino API传输该数据,该API以及文档和设置可用here . 基本思路:您可以连续从Arduino流式传输数据,或传输单个块 .
然后,如果您想将其嵌入网站,则需要获取该网址并使用此代码段:
您可以更改该代码段中的宽度/高度尺寸 . 注意:您需要在那里交换自己的URL以获得流 .
Here's an example of how it looks to stream Arduino data
完全披露:我为Plotly工作 .
仔细看看手边的资源后,我意识到这个问题已经被人们在http://arduino.cc解决了 .
哦,如果我早些时候见过,我可以节省多少时间 .