谁能解释一下为什么我的c++;arduino的代码不起作用 我用C++编码,以便从用户输入,然后点亮相应的LED。 这是我的密码 int rPin = 13;` int gPin = 12; int yPin = 11; int dTime = 500; String input; //Strings //String red = "red"; String prompt1 = "Enter the color : "; String conformation = "Entered color is "; void setup(){ pinMode(rPin,OUTPUT); pinMode(gPin,OUTPUT); pinMode(yPin,OUTPUT); Serial.begin(9600); } void loop() { Serial.println(prompt1); input = Serial.readString(); while(Serial.available() == 0) { } if (input == "red"){ digitalWrite(rPin,HIGH); delay(dTime); digitalWrite(rPin,LOW); delay(dTime); } else if (input == "green"){ digitalWrite(gPin,HIGH); delay(dTime); digitalWrite(gPin,LOW); delay(dTime); } else if (input == "yellow"){ digitalWrite(yPin,HIGH); delay(dTime); digitalWrite(yPin,LOW); delay(dTime); } // digitalWrite(gPin,HIGH); // digitalWrite(yPin,HIGH);
我的arduino电路连接没有问题,我对它进行了三次检查…它表明在arduino IDE中蝙蝠右侧示例的第一行中有额外的字符。至于程序的逻辑,我假设问题出在谁能解释一下为什么我的c++;arduino的代码不起作用 我用C++编码,以便从用户输入,然后点亮相应的LED。 这是我的密码 int rPin = 13;` int gPin = 12; int yPin = 11; int dTime = 500; String input; //Strings //String red = "red"; String prompt1 = "Enter the color : "; String conformation = "Entered color is "; void setup(){ pinMode(rPin,OUTPUT); pinMode(gPin,OUTPUT); pinMode(yPin,OUTPUT); Serial.begin(9600); } void loop() { Serial.println(prompt1); input = Serial.readString(); while(Serial.available() == 0) { } if (input == "red"){ digitalWrite(rPin,HIGH); delay(dTime); digitalWrite(rPin,LOW); delay(dTime); } else if (input == "green"){ digitalWrite(gPin,HIGH); delay(dTime); digitalWrite(gPin,LOW); delay(dTime); } else if (input == "yellow"){ digitalWrite(yPin,HIGH); delay(dTime); digitalWrite(yPin,LOW); delay(dTime); } // digitalWrite(gPin,HIGH); // digitalWrite(yPin,HIGH);,arduino,arduino-c++,Arduino,Arduino C++,我的arduino电路连接没有问题,我对它进行了三次检查…它表明在arduino IDE中蝙蝠右侧示例的第一行中有额外的字符。至于程序的逻辑,我假设问题出在input=Serial.readString()放置在任何串行数据可用之前 但是,在等待任何串行输入时使用循环应该有这样的原因,否则我建议重新考虑这个实现,我在下面所做的。以下是更正的版本: int rPin = 13; int gPin = 12; int yPin = 11; int dTime = 500; //Strings //S
input=Serial.readString()代码>放置在任何串行数据可用之前
但是,在等待任何串行输入时使用循环应该有这样的原因,否则我建议重新考虑这个实现,我在下面所做的。以下是更正的版本:
int rPin = 13;
int gPin = 12;
int yPin = 11;
int dTime = 500;
//Strings
//String red = "red";
String prompt1 = "Enter the color : ";
String conformation = "Entered color is ";
void setup(){
pinMode(rPin,OUTPUT);
pinMode(gPin,OUTPUT);
pinMode(yPin,OUTPUT);
Serial.begin(9600);
Serial.println(prompt1);
}
void loop() {
String input;
while (Serial.available() > 0) {
String input = Serial.readStringUntil('\n'); // Read until newline
input.trim(); // Clean up whitespace
if (input == "red"){
digitalWrite(rPin,HIGH);
delay(dTime);
digitalWrite(rPin,LOW);
delay(dTime);
} else if (input == "green"){
digitalWrite(gPin,HIGH);
delay(dTime);
digitalWrite(gPin,LOW);
delay(dTime);
} else if (input == "yellow"){
digitalWrite(yPin,HIGH);
delay(dTime);
digitalWrite(yPin,LOW);
delay(dTime);
}
}
}
在调用Serial.available()
的循环之后,您不需要调用Serial.readString()
?你在输入之前调用它。我的ARDINO不工作的C++代码不是一个好的问题描述。你应该描述你对输入的期望和你得到的。什么是String
?如果是C样式字符串的typedef,则必须使用strcmp()
来比较它们,而不是=
。但是如果它像C++代码> STD::String 那么代码> = = /COD>可以。您可以在尝试读取<代码>输入< /代码>时,尝试发布更多有用的帮助。