如何修复从Arduino串行到处理端口的慢速连接



基本上,我正在尝试使用力传感电阻器接收到的数据来更改处理草图的背景的颜色。我遇到的问题是Arduino串行端口运行良好/迅速,但是处理串行端口非常慢/响应非常延迟。

我尝试在arduino循环中添加延迟,但是当我添加该代码行时,即使我对Background_color变量有默认值,也会收到NullPoInterException错误。我还尝试在循环结束时使用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似乎仍在发送数据太快以至于无法进行反应。

在处理方面,您有一个FIFO缓冲区

您只有在ADC读数上发生某个更改和/或阅读后处理缓冲区时,才可以尝试从Arduino发送数据:

myPort.clear() 

如果这两种方法都无法解决您的问题,您也可能正在运行"货物版本"处理,您可能需要更新它。

最新更新