Vi um código que usava "SWITCH CASE" com Serial.read (desde que o programador se comunicasse diretamente pelo teclado), minha dúvida é se em alguma instância eu consigo fazer ele ler a tela SERIAL de tempos em tempos e se atualizar.
(Sim, dava pra acender os LEDs somente com if/else/else if, mas eu queria me desafiar a entender SWITCH CASE de forma mais complicada risos)
O erro que meu código está entregando é o seguinte, somente o LED Amarelo acende, no caso o "ledPIN1", na porta 11.
float valorLido = A0;
byte pinoLDR = 0;
const int ledPIN = 9;
const int ledPIN1 = 11;
const int ledPIN2 = 13;
char data;
int option;
void setup() {
pinMode (pinoLDR, INPUT);
pinMode (ledPIN , OUTPUT);
pinMode (ledPIN1 , OUTPUT);
pinMode (ledPIN2 , OUTPUT);
Serial.begin (9600);
delay (100);
}
void loop(){
valorLido = analogRead(pinoLDR);
Serial.println (valorLido);
delay (500);
data = Serial.read();
delay (500);
if(data <= 200.00)
{
option = 0;
}
else if(data <= 400.00)
{
option = 1;
}
else if(data >= 401.00)
{
option = 2;
}
switch (option)
{
case 0: // GREEN ON IF DATA = 200 OR LESS
digitalWrite(ledPIN, HIGH);
delay(500);
digitalWrite(ledPIN1, LOW);
digitalWrite(ledPIN2, LOW);
break;
case 1: // YELLOW ON IF DATA BETWEEN 201 AND 400
digitalWrite(ledPIN1, HIGH);
delay(500);
digitalWrite(ledPIN, LOW);
digitalWrite(ledPIN2, LOW);
break;
case 2: // RED ON IF DATA IS GREATER THAN 401
digitalWrite(ledPIN2, HIGH);
delay(500);
digitalWrite(ledPIN, LOW);
digitalWrite(ledPIN1, LOW);
break;
}
}