【发布时间】:2019-07-08 16:13:40
【问题描述】:
基本上,我正在尝试使用力感应电阻器接收到的数据来更改处理草图的背景颜色。我遇到的问题是 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 错误。我有什么不同的方法可以解决这个问题吗?
【问题讨论】:
标签: arduino processing