通过COM端口的Arduino通信不起作用
我希望我的Arduino在串行端口中读到“ On”,可以点亮LED。 在serial.print(serialdata);
它打印出他阅读的内容,但在if(serialdata ==“ on”)
它将无法使用。
int led1 = 9;
int led2 = 6;
String serialData;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Serial.begin(9600);
Serial.setTimeout(10);
}
void loop() {
if (Serial.available() > 0){
serialData = Serial.readString();
Serial.print(serialData);
if (serialData == "on"){
analogWrite(led1, 255);
}
if (serialData == "off"){
analogWrite(led1, 0);
}
}
}
有人知道,我在做什么错?
I want my Arduino to light up the LED if he reads "on" in the Serial Port.
At Serial.print(serialData);
it prints out what he reads but at if (serialData == "on")
it wont work.
int led1 = 9;
int led2 = 6;
String serialData;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Serial.begin(9600);
Serial.setTimeout(10);
}
void loop() {
if (Serial.available() > 0){
serialData = Serial.readString();
Serial.print(serialData);
if (serialData == "on"){
analogWrite(led1, 255);
}
if (serialData == "off"){
analogWrite(led1, 0);
}
}
}
Anybody know, what I'm doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的代码中有两个问题:
ReadString()
将在单个字符后返回,并且读取字符串可能为“ O”,“ N”,“ F”。解决方案是大大增加超时,并使用
readStringuntil()
读取直到发现新线字符。这表明已经输入了一个完整的单词(或命令)。此外,需要修剪托架返回和线馈电。
There are two issues in your code:
readString()
will return after a single character and the read string will likely be "o", "n", "f".The solution is to increase the timeout considerably and to use
readStringUntil()
to read until the newline character is discovered. This is the indication that a full word (or command) has been entered.Additionally, the carriage return and line feed need to be trimmed off.