質問

フォトセル抵抗器と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で働いています。

他のヒント

手元のリソースを詳しく見てみると、 httpで問題がすでに解決されていることに気付きました。 ://arduino.cc

  

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

ああ、それを見たことがあればどれだけの時間を節約できたでしょうか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top