По сути, я пытаюсь использовать данные, полученные резистором, чувствительным к силе, для изменения цвета фона эскиза обработки. Проблема, с которой я сталкиваюсь, заключается в том, что последовательный порт Arduino работает нормально / быстро, но последовательный порт обработки невероятно медленный / имеет очень запаздывающий ответ.
Я попытался добавить задержку в цикле Arduino, но когда я добавляю эту строку кода, я получаю ошибку NullPointerException, хотя у меня есть значение по умолчанию для переменной background_color. Я также попытался использовать функцию myPort.clear () в конце цикла, и, хотя я не получил ошибку, она испортилась с цветом и дала эффект мерцания, потому что значения очищались так часто.
Это код Arduino:
int A = A0;
int fsrreadingA;
int motorMap = 255;
int forceMap = 300;
int scalar = 4;
void setup() {
pinMode(A, OUTPUT);
Serial.begin(9600);
}
void loop() {
fsrreadingA = analogRead(A) * scalar;
int valA = map(fsrreadingA, 0, forceMap, 0, motorMap);
analogWrite(3, valA);
Serial.println(valA);
delay(100);
}
Это код обработки:
import processing.serial.*;
Serial myPort;
float background_color = 0;
void setup() {
size(500,500);
colorMode(HSB, 255);
println("Available serial ports:");
println(Serial.list());
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
}
void draw() {
if (myPort.available() > 0) {
background_color = float(myPort.readStringUntil('\n'));
println(background_color);
}
background(background_color,150,100);
}
Я ожидаю, что цвет фона изменится, когда пользователь нажимает на FSR больше / меньше. Это должно измениться от коричневого цвета до фиолетового / розового цвета. Я не уверен, что делать / как исправить ошибку NullPointerException. Есть ли другой способ, которым я должен пойти по этому поводу?