Кто-нибудь может объяснить, почему мой код c для arduino не работает

#arduino #arduino-c

Вопрос:

Я закодировал на C так, чтобы он принимал ввод от пользователя, а затем загорался соответствующий светодиод.Это мой код..

 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 проблем нет ,я трижды проверяю ее …

Комментарии:

1.Разве вам не нужно звонить Serial.readString() после цикла, который вызывает Serial.available() ? Вы вызываете его до того, как будет доступен ввод.

2. мой код c для arduino не работает — это не очень хорошее описание проблемы. Вы должны описать, чего вы ожидаете от ввода и что вы получаете.

3. Что такое String ? Если это typedef для строк в стиле C, вы должны использовать strcmp() его для сравнения, а не == . Но если это похоже на C std::string , тогда == все в порядке.

4. Вы можете получить более полезную помощь, разместив сообщение на Arduino

5. Попробуйте распечатать значение input после того, как вы его прочитаете.