Я относительно новичок и для Arduino, и для обработки, и я работал над кодом, который использует последовательную связь между ними. Мой код Arduino считывает и печатает значения с пьезодатчика, а затем отправляет значения в «Обработка», которые набросают определенные фигуры на основе значений. Код работал ранее, но по какой-то причине он больше не работает. Все компилируется, но когда я запускаю код обработки, окно эскиза пуст и остается пустым. Несколько раз появлялась «ошибка, отключая serialEvent()», но я просто отключил плату от Arduino, закрыл программы и перезапустил все. Ошибка больше не появляется, но мой эскиз обработки пока не отображается на экране. Может кто-нибудь, пожалуйста, дайте мне знать, что не так с моим кодом? Я очень ценю помощь.Ошибка с Arduino/Обработка последовательной связи
Arduino Код:
int ledPin = 13;
int knockSensor = A0;
byte val = 0;
int statePin = LOW;
int THRESHOLD = 5;
int sensorReading = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorReading = analogRead(knockSensor);
if(sensorReading > 0)
{
Serial.println(sensorReading, DEC);
}
if (sensorReading != 0)
Serial.println(sensorReading);
delay(100);
}
Обработка Код:
import processing.serial.*;
Serial port;
int centerX = 550;
int centerY = 400;
float val;
float ellipseX;
float ellipseY;
float ellipseW;
float ellipseH;
float ellipseXX;
float ellipseYY;
float ellipseWW;
float ellipseHH;
float lineX;
float lineY;
float lineXX;
float lineYY;
void setup(){
background(255);
size(1100,800);
frameRate(10);
smooth();
String portname = "/dev/tty.usbmodem1411";
//String portname = Serial.list()[0];
port = new Serial(this, portname, 9600);
println(Serial.list());
//port.bufferUntil('\n');
}
void drawEllipse(float val)
{
if(val > 0 && val < 50)
{
ellipseX = random(540,560);
ellipseY = random(390,410);
ellipseW = val + 10;
ellipseH = val + 10;
stroke(0);
fill(random(255), random(200,255));
}
}
void drawLines(float val)
{
if(val > 50 && val < 70)
{
lineX = random(500, 600);
lineY = random(360, 440);
lineXX = random(500, 600);
lineYY = random(360, 440);
stroke(0);
}
}
void drawEllipse2(float val)
{
if(val > 70 && val < 120)
{
ellipseXX = random(460, 640);
ellipseYY = random(330, 470);
ellipseWW = val + random(20);
ellipseHH = val + 10;
stroke(0);
fill(random(50, 100), random(50, 100), random(50, 100), random(220, 255));
}
}
void serialEvent(Serial port)
{
String inString = port.readStringUntil('\n');
if (inString != null)
{
val = Float.parseFloat(inString);
}
drawEllipse(val);
drawLines(val);
drawEllipse2(val);
println(val);
}
Вы лучше просить о http://arduino.stackexchange.com – leDominatre
Знаете ли вы, что в вашем Arduino эскиз, вы делают Serial.println два раза для каждого датчика? Я не знаю, если это проблема, но было ли это то, что вы намеревались? (Оба выглядят так, как будто они делают в основном одно и то же). –
О, спасибо, что указали это, но я не думаю, что это проблема. –