我有一个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 回答
在
Serial.println(micLevel,DEC);
中为什么要将值转换为十进制?如果你想用它发送文本,请尝试只是Serial.println(micLevel);
或转换为字符串Serial.println("Value is: " + String(micLevel));