[Resolvido] Ajuda com Código para Acionarar um LED baseado na Cor Desejada

Pessoal, boa tarde ,

Sou iniciante no Arduino e estou tentando aprender da forma mais básica como as coisas funcionam. Queria acionar um LED RGB, tomando-se como base a cor digitada pelo usuário. Poderia utilizar um switch… case, mas estou usando a opção “if”. As coisas não estão saindo como desejado. Será que alguém poderia avaliar o código? Pra muitos é coisa básica, mas pra mim ainda é um pouco complexo, visto que estou aprendendo. Agradeço pela atenção e ajuda.

Segue o código:

int azul = 9;
int verde = 10;
int vermelho = 12;
char cor;

void setup() {

pinMode (azul, OUTPUT);
pinMode (verde, OUTPUT);
pinMode (vermelho, OUTPUT);
Serial.begin (9600);
}

void Vermelho()
{
digitalWrite (vermelho, HIGH);
delay (1000);
digitalWrite (vermelho, LOW);
delay (1000);
}

void Verde()
{
digitalWrite (verde, HIGH);
delay (1000);
digitalWrite (verde, LOW);
delay (1000);
}

void Azul()
{
digitalWrite (azul, HIGH);
delay (1000);
digitalWrite (azul, LOW);
delay (1000);
}

void Branco()
{
digitalWrite (azul, HIGH);
digitalWrite (vermelho, HIGH);
digitalWrite (verde, HIGH);
delay (1000);
digitalWrite (azul, LOW);
digitalWrite (vermelho, LOW);
digitalWrite (verde, LOW);
delay (1000);
}

void Magenta()
{
digitalWrite (azul, HIGH);
digitalWrite (vermelho, HIGH);
delay (1000);
digitalWrite (azul, LOW);
digitalWrite (vermelho, LOW);
delay (1000);
}

void Amarelo()
{
digitalWrite (vermelho, HIGH);
digitalWrite (verde, HIGH);
delay (1000);
digitalWrite (vermelho, LOW);
digitalWrite (verde, LOW);
delay (1000);
}

void Ciano()
{
digitalWrite (azul, HIGH);
digitalWrite (verde, HIGH);
delay (1000);
digitalWrite (azul, LOW);
digitalWrite (verde, LOW);
delay (1000);
}

void Desligado ()
{
digitalWrite ( vermelho, LOW);
digitalWrite ( verde, LOW);
digitalWrite ( azul, LOW);
}

void loop ()
{
if (Serial.available())
{
Serial.print (“Digite a cor desejada:”);
cor = Serial.read();
Serial.println (cor);

if(cor = “vermelho”)
{
Vermelho();
return;
}
else if (cor = “verde”)
{
Verde();
return;
}
else if (cor = “azul”)
{
Azul();
}
else if (cor = “branco”)
{
Branco();

}
else if (cor = “magenta”){
Magenta();

}
else if (cor = “amarelo”){
Amarelo();

}

else if (cor = “ciano”)
{
Ciano();
}
else {
Desligado();
}
}
}

Consegui resolver.

Havia um erro na declaração da variável “cor”. Inicialmente ela foi declarada como char, depois a mudei para String.
String cor;
Na leitura da porta Serial, mudei para Serial.readString(); e na comparação de valores, == ao invés de =. Fazendo essas alterações, o código funcionou perfeitamente.