首页 文章

Arduino值在Processing和Arduino Serial Monitor中的输出方式不同

提问于
浏览
2

我有一个Arduino Mega2560,它从传感器(Grove响度传感器)读取模拟值,然后通过USB将它们发送到Raspberry Pie 3b . 这些值在Arduino IDE的串行监视器中完美无误地到达 . 但是当我尝试在处理中接收它们时,无论我发出多少噪音,我都会得到大多数零点,随机峰值在这里和那里 .

我的第一个猜测是我的处理代码使收到的数据变得混乱,因此我更改了Arduino草图以发送递增的Integer而不是传感器值 - 并且这些测试值在Processing中正确显示!接下来,我尝试在一些字符串中填充传感器值,如 "MICRO("+theSensorValue+");" . 串口监视器显示整个String和正确的传感器值,Processing显示整个String,但里面的值仍然是垃圾 .

这对我没有任何意义 . 处理可以正确地从Arduino接收任何值,除非它是传感器值...

Arduino的:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int micLevel = analogRead(A0);
  Serial.println(micLevel,DEC);
}

处理:

Serial port;

void setup() {
  port = new Serial(this, "/dev/ttyACM0", 9600);
}

void draw() {
  String s = "";
  if(port.available() > 0) {  
     s = port.readStringUntil(10); 
     println(s);
  }
}

1 回答

  • -1

    Serial.println(micLevel,DEC); 中为什么要将值转换为十进制?如果你想用它发送文本,请尝试只是 Serial.println(micLevel); 或转换为字符串 Serial.println("Value is: " + String(micLevel));

相关问题