Go Down

Topic: Problemas com Led e função While (Read 614 times) previous topic - next topic

jujubs

São dois problemas:

O led_1 não pisca ele permanece aceso, enquanto que os outros piscam.

Eu só consigo dar uma resposta para a variável recebido, isto é ela não recebe outro valor além do primeiro digitado, neste caso seria para ele produzir a sua respectiva função até que outro valor fosse digitado.

Começa com os leds fazendo um sequencial de piscas da esquerda para a direita

Se digitar A a sequencia dos leds permanece invertida.

Se digitar B todos os leds permanecem apagados.

Se digitar C todos os leds permanecem ascesos.

Se digitar D o código é resetado

Code: [Select]

int recebido;
int recebido2 = '0';

int led_1 = 1;
int led_2 = 2;
int led_3 = 3;
int led_4 = 4;

void setup()
{
  pinMode(led_1, OUTPUT);
  pinMode(led_2, OUTPUT);
  pinMode(led_3, OUTPUT);
  pinMode(led_4, OUTPUT);
  Serial.begin(9600);
}
void(* resetFunc)(void)=0;

void loop()
{   
  digitalWrite(led_1, HIGH);
          delay(250);
  digitalWrite(led_1, LOW);
          delay(250);
 
  digitalWrite(led_2, HIGH);
          delay(250);
  digitalWrite(led_2, LOW);
          delay(250);
 
  digitalWrite(led_3, HIGH);
          delay(250);
  digitalWrite(led_3, LOW);
          delay(250);
 
  digitalWrite(led_4, HIGH);
          delay(250);
  digitalWrite(led_4, LOW);
        delay(250);
  if(Serial.available()>0){
  recebido = Serial.read();
   
    while (recebido == 'a'){
     
  digitalWrite(led_4, HIGH);
          delay(250);
  digitalWrite(led_4, LOW);
          delay(250);
 
  digitalWrite(led_3, HIGH);
          delay(250);
  digitalWrite(led_3, LOW);
          delay(250);
 
  digitalWrite(led_2, HIGH);
          delay(250);
  digitalWrite(led_2, LOW);
          delay(250);
 
  digitalWrite(led_1, HIGH);
          delay(250);
  digitalWrite(led_1, LOW);
          delay(250);
     
      recebido2 == '5';
      }
   
    while (recebido == 'b'){
         
  digitalWrite(led_4, LOW);
 
  digitalWrite(led_3, LOW);
 
  digitalWrite(led_2, LOW);
 
  digitalWrite(led_1, LOW);
     
      recebido2 == '5';
      }
 
   
    while (recebido == 'c'){
     
    digitalWrite(led_4, HIGH);
 
  digitalWrite(led_3, HIGH);
 
  digitalWrite(led_2, HIGH);
     
  digitalWrite(led_1, HIGH);
     
      recebido2 == '5';
    }
 
   
    while (recebido == 'd'){
    resetFunc();
    }
  }
  }

Go Up