我基本上是尝试通过串口读取字符串。我使用了" Serial.readstringUntil"读取字符串然后与某些数据进行比较的语法。我成功地做到了。现在在同一个程序中,我想再次读取另一个字符串,然后将其与其他一些数据进行比较。但它失败了,因为在先前加载的字符串之间进行了比较。可能是什么问题。不是亲!抱歉。 这是代码。
int x;
String str;
String data="on";
String data2="off";
void calfunc();
void setup()
{
Serial.begin(9600);
pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
Serial.println("Enter");
}
void loop()
{
if(Serial.available() > 0)
{
str = Serial.readStringUntil(' ');
//x = Serial.parseInt();
//Serial.println(str);
if(str.equals (data))
{
Serial.println("Access Granted. ");
calfunc();
}
else if(str.equals(data2))
{
digitalWrite(5, HIGH);
digitalWrite(13, HIGH);
Serial.println("Access Denied");
}
}
delay(100);
}
void calfunc(){
digitalWrite(5, LOW);
digitalWrite(13, LOW);
Serial.println("For Temperature press 1");
Serial.println("For Moisture press 2");
delay(100);
char a=Serial.read();
if(a=='1')
{
Serial.println(analogRead(A0));
}
else if(a=='2')
{
Serial.println(analogRead(A1));
}
else
{
Serial.println("Wrong Choice");
delay(500);
return;
}
return;
}
答案 0 :(得分:0)
您好我注意到您在loop()函数中使用了C“else if”语句,但是您还没有使用else语句
if(boolean_expression 1)
{
/* Executes when the boolean expression 1 is true */
}
else if( boolean_expression 2)
{
/* Executes when the boolean expression 2 is true */
}
else if( boolean_expression 3)
{
/* Executes when the boolean expression 3 is true */
}
else
{
/* executes when the none of the above condition is true */
}
请你试试这个,我没有安装Arduino编译器
void loop()
{
if(Serial.available() > 0)
{
str = Serial.readStringUntil(' ');
//x = Serial.parseInt();
//Serial.println(str);
if(str.equals (data))
{
Serial.println("Access Granted. ");
calfunc();
}
if(str.equals(data2))
{
digitalWrite(5, HIGH);
digitalWrite(13, HIGH);
Serial.println("Access Denied");
}
}
delay(100);
}