ArduinoからProcessingに送信される奇妙なランダムデータ
-
05-07-2019 - |
質問
フォトセル抵抗器と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?
解決
Plotly Arduino APIを使用してそのデータを送信できます。このAPIは、ドキュメントとセットアップとともにこちら。基本的な考え方:Arduinoから継続的にデータをストリーミングしたり、単一のチャンクを送信したりできます。
次に、サイトに埋め込む場合は、URLを取得して次のスニペットを使用します。
<iframe id="igraph" src="https://plot.ly/~abhishek.mitra.963/1/400/250/" width="400" height="250" seamless="seamless" scrolling="no"></iframe>
そのスニペットで幅/高さの寸法を変更できます。注:ストリームを取得するには、そこに独自のURLをスワップする必要があります。
これは、Arduinoデータをストリーミングする場合の例です
完全な開示:私はPlotlyで働いています。
他のヒント
所属していません StackOverflow