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