Ir ao conteúdo
  • Cadastre-se

Arduino Como isolar Função "else" para executa-la 1 vez dentro do Void loop?


Visitante

Posts recomendados

olá é eu quero fazer com que a função "else" quando o botão estiver desligado seja executada uma vez apenas sem deixar o sistema pausado;

 

o codigo::thumbsup:



const int ledAmarelo = 8;
const int ledVerde = 9;
const int ledVermelho = 10;
const int ledAzul = 11;
const int botao = 2;
int estadoBotao = 0;
 
void setup() {
  pinMode(ledAmarelo,OUTPUT);  //Definindo pino 8 como saída.
  pinMode(ledVerde,OUTPUT);    //Definindo pino 9 como saída.
  pinMode(ledVermelho,OUTPUT); //Definindo pino 10 como saída.
  pinMode(ledAzul,OUTPUT);     //Definindo pino 11 como saída.
  
  pinMode(botao,INPUT);        //Definindo pino 2 como entrada.
}
 
void loop() {
  estadoBotao = digitalRead(botao);
  
  if (estadoBotao == HIGH) {
    
    digitalWrite(ledAmarelo,HIGH);
    delay(200);    
    digitalWrite(ledVerde,HIGH);
    delay(200);    
    digitalWrite(ledVermelho,HIGH);
    delay(200);    
    digitalWrite(ledAzul,HIGH);    
    delay(200);
  } else 
   digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledVermelho,LOW);
    digitalWrite(ledAzul,LOW);
    digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledAmarelo,LOW);  
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledVermelho,LOW);
    digitalWrite(ledVermelho,LOW);
    digitalWrite(ledAzul,LOW);
    digitalWrite(ledAzul,LOW);
     } 


  o Objetivo é criar o mesmo efeito dos LEds acesos 1 por 1 quando soltar o botão os leds se desligam 1 por 1...

obrigado
   arduino UNO 
  
 

Link para o comentário
Compartilhar em outros sites

O else só funciona no primeiro digitalWrite(ledAmarelo,LOW); Ou seja, o que você está fazendo no código é enquanto você aperta o botão ele faz a sequencia de acendimento dos leds quando você solta ele vai executar digitalWrite(ledAmarelo,LOW); e depois disso ele vai para o loop infinito desligando todo o tempo dos leds

 

digitalWrite(ledVerde,LOW);
    digitalWrite(ledVermelho,LOW);
    digitalWrite(ledAzul,LOW);
    digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledAmarelo,LOW);  
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledVermelho,LOW);
    digitalWrite(ledVermelho,LOW);
    digitalWrite(ledAzul,LOW);
    digitalWrite(ledAzul,LOW);

 

Se você quer modificar isso coloca os "{" do else corretamente para abraçar o resto do código assim como você fez no if...

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Não gosto do estilo de programação do arduino e tal mas percebo duas coisas:

-como observou o amigo @Bommu Perneta também estou achando falta do "}" aperto do "abraço" (gostei disso) do loop. -outra você desliga imediatamente sem delay. Por isso não desligam 1 a 1

 

{       } // abraço

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Isadora Ferraz disse:

Não gosto do estilo de programação do arduino e tal mas percebo duas coisas:

-como observou o amigo @Bommu Perneta também estou achando falta do "}" aperto do "abraço" (gostei disso) do loop. -outra você desliga imediatamente sem delay. Por isso não desligam 1 a 1

 

{       } // abraço

Mas o que eu quero fazer é exucutar esse low somente uma vez. Depois passar para outro código.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Deixa entender... você que um efeito nos leds a cada apertada do botão? Fácil... coloca um...


 

while (estadoBotao==1) estadoBotao = digitalRead(botao); //espera apertar
while (estadoBotao==0) estadoBotao = digitalRead(botao);//espera soltar

 

...entre cada efeito.

Meio doidinho isso mas é só pra você entender o conceito

Link para o comentário
Compartilhar em outros sites

 coloca um if para esperar pelo button , dentro do if coloca o while para executar a tarefa de ligar os leds e fora desse while e ainda dentro do if coloca para apagar os leds. Ai ele só vai apagar o led no final se você apertar o button no final. Sem else.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...