Странные случайные данные отправляются из Arduino в Processing - PullRequest
4 голосов
/ 02 ноября 2008

Я пытаюсь прочитать данные с фотоэлемента и моего 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

}

код, который я запускаю в обработке:

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 ]

4 голосов
/ 02 ноября 2008

После более внимательного изучения имеющихся ресурсов я понял, что проблема уже была решена для меня людьми на http://arduino.cc

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

О, сколько бы я мог сэкономить, если бы видел это раньше.

2 голосов
/ 06 ноября 2013

Вы можете передавать эти данные с помощью API Plotly Arduino, который вместе с документацией и настройкой доступен здесь . Основная идея: вы можете непрерывно передавать данные с вашего 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

enter image description here

Полное раскрытие: я работаю на Plotly.

...