Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
felipe honorio

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

Recommended Posts

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 
  
 

Compartilhar este post


Link para o post
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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    • Curtir 1

    Compartilhar este post


    Link para o post
    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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×