我有一个Arduino Mega2560,它从传感器(格罗夫响度传感器)读取模拟值,并通过USB将其发送到树莓派3b。这些值在Arduino IDE的串行监视器中完美且毫不延迟地到达。但当我试图在处理过程中接收它们时,无论我发出多少噪声,我都会得到几乎为零的值,这里和那里都有随机的峰值。
我的第一个猜测是,我的处理代码将接收到的数据弄乱了,所以我更改了Arduino草图,以发送一个递增的整数,而不是传感器值——这些测试值在处理过程中正确显示!接下来,我尝试用一些字符串填充传感器值,比如“MICRO(“theSensorValue”)
。串行监视器显示整个字符串和正确的传感器值,Processing显示整个字符串,但其中的值仍然是垃圾。。
这对我来说毫无意义。处理可以正确地从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);
}
}
在序列中。println(MICLever,12月)
为什么要将值转换为十进制?试着用
Serial。println(micLevel)
或转换为字符串,如果你想用它发送文本<代码>序列。println(“值为:”字符串(micLevel))
我有一个程序可以打印到液晶显示器上,我想知道我是否可以同时将它打印到串行显示器上。 我试过连载。开始,但只是有错误。
我正在尝试使用LiquidCrystal库在两个LED屏幕上以及在串行监视器上进行Arduino输出(稍后将输出到txt文件或类似文件)。 在我的代码中,我注释掉了Serial。开始(9600),然后屏幕正确输出,但一旦我包括它,串行监视器输出良好,但屏幕翻转并输出乱码。我是个新手,我知道有一些基本的东西我不知道,比如9600应该增加,因为可能需要这么大的功率? 干杯
我已经用java编写了一段代码来与我的Arduino板通信。它工作得很好。我还可以使用串行监视器与Arduino板通信。 但是,当我试图打开串行监视器时,java程序正在运行(监听连接到电子板的端口,端口32),它没有说, 串行端口“COM 32”已在使用中。尝试退出任何可能正在使用它的程序 这是完整的信息(为了完整起见) 是的,我知道,这是我的java程序,它正在使用端口。但这是否意味着我不能同
我正试图通过串行连接将处理过程中的一些数据发送到Arduino,以便Arduino可以控制LED条。在传输过程中,我可以查看串行监视器吗? 我不能使用任何语句(用于调试)。每次我尝试我都会 串行端口COM3已在使用中。尝试退出任何可能使用它的程序。 当我同时查看串行监视器时,是否有办法进行串行通信?
我正在开发一个程序,它将消息从Arduino发送到Processing,将它们作为十进制数从Arduino打印到串行端口,然后在Processing中以字符串数组的形式提取它们。我遇到的问题是:“ArrayIndexOutOfBounds:18”,它突出显示了一行,上面写着dlay=Integer.parseInt(B[18]),我假设数组不够大,无法存储超过17的数据,我可能犯了一个非常愚蠢的错
我四处寻找,但找不到解决这个问题的办法。我正在用我能想到的最简单的例子来测试这个。这是处理代码: 如果我在串行监视器上查看输出,它会正确打印“012012012012012012012”等,没有任何问题。我写了一个简单的程序在处理中查看数据: 大多数情况下,它会打印垃圾: 偶尔它会输出正确的值: 看起来每个字节都向左移动了3位,尽管我不明白为什么每次运行程序时它的行为都不一样。有趣的是,如果我让a