从串行监视器读取字符串变量时的 Arduino RGB LED 左值问题

Arduino RGB LED lvalue problem in string variable reading from Serial Monitor

我正在使用 Arduino Uno 中的 RGB Led,但是当我尝试编译此消息时,出现了此字符串 'myColor = Serial.readString();': 在函数 'void loop()' 中: 21:29: 错误:需要左值作为赋值的左操作数 退出状态 1

附加的屏幕转储提供了以下代码:

 1  int red=9;
 2  int green=10;
 3  int blue=11;
 4  String msg="What color LED?";
 5  String myColor;
 6
 7  void setup()
 8  {
 9    pinMode(red, OUTPUT);
10    pinMode(green, OUTPUT);
11    pinMode(blue, OUTPUT);
12    Serial.begin(9600);
13  }
14
15  void loop()
16  {
17    Serial.println(msg);
18    while(Serial.available()=0) {
19    }
20    myColor = Serial.readString();
21    if (myColor=="red"){
22      digitalWrite(red,HIGH);

由此产生的编译器错误是:

In function 'void loop()':
20:29: error: lvalue required as left operand of assignment
 exit status 1

你的错误在第 18 行。你错误地写了 while(Serial.available()=0){ (只有一个 '=')所以它看起来像对编译器的赋值(但赋值运算符左侧的对象不是左值)。你的意思是:

while(Serial.available()==0){