Problema al comparar un String

Buenas, en esta oacsión estaba intentando hacer un programa que lee por pantalla un string (verde, rojo, o azul), y en función de lo que se escriba, enciende el led correspondiente a dicho String. El problema es que el led no se enciende, el circuito funciona correctamente y he probadoa cambiar los pines de salida, pero nada parece arreglarlo, alguno sabe cual puede ser el error?

E código es este:

String color;
int rled=13;
int vled=11;
int aled=12;
void setup() {
pinMode(vled,OUTPUT);
pinMode(rled,OUTPUT);
pinMode(aled,OUTPUT);
Serial.begin(9600);
}

void loop() {
Serial.println("Escribe el color del led");
color=Serial.readString();
while(Serial.available()==0){

}
Serial.print("Tu color es ");
Serial.print(color);
if(color == "verde"){
digitalWrite(vled,HIGH);
digitalWrite(rled,LOW);
digitalWrite(aled,LOW);
}
if(color == "rojo"){
digitalWrite(vled,LOW);
digitalWrite(rled,HIGH);
digitalWrite(aled,LOW);
}
if(color == "azule"){
digitalWrite(vled,LOW);
digitalWrite(rled,LOW);
digitalWrite(aled,HIGH);
}

}

Prueba esto:

int rled = 13;
int vled = 11;
int aled = 12;
void setup() {
  pinMode(vled, OUTPUT);
  pinMode(rled, OUTPUT);
  pinMode(aled, OUTPUT);
  Serial.begin(9600);
  Serial.println("Escribe el color del led");
}

void loop() {
  if (Serial.available() > 0) {
    String color = Serial.readStringUntil('\n');
    Serial.print("Tu color es: ");
    if (color == "verde") {
      Serial.print(color);
      digitalWrite(vled, HIGH);
      digitalWrite(rled, LOW);
      digitalWrite(aled, LOW);
    } else if (color == "rojo") {
      Serial.print(color);
      digitalWrite(vled, LOW);
      digitalWrite(rled, HIGH);
      digitalWrite(aled, LOW);
    } else if (color == "azule") {
      Serial.print(color);
      digitalWrite(vled, LOW);
      digitalWrite(rled, LOW);
      digitalWrite(aled, HIGH);
    }
    Serial.println("\nEscribe el color del led");
  }
}
1 Like

Gracias!

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.