Ir ao conteúdo
  • Cadastre-se

Luiz Henrique Moneche de A

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por Luiz Henrique Moneche de A

  1. @thiagosilva.ste  e @aphawk

     

    Agradeço pela ajuda, mas está resolvido o problema.

     

    A quem interessar, o código ficou assim...

    const int red=8; // LED VERMELHO PINO 8
    const int green=10; // LED VERDE PINO 10
    const int blue=12; // LED AZUL PINO 12
    
    const int botao=2; // BOTÃO PINO 2
    
    int estadoantbotao = 0; // VARIÁVEL CONTENDO ESTADO ANTERIOR DO BOTÃO
    int estadoatualbotao = 0; // VARIÁVEL CONTENDO ESTADO ANTUAL DO BOTÃO
    
    int count=0; // VARIÁVEL RESPONSÁVEL PELA CPNTAGEM DE APERTOS DO BOTÃO
    
    void setup() {
      pinMode (red,OUTPUT); // LED DEFINIDO COMO SAÍDA
      pinMode (green,OUTPUT); // LED DEFINIDO COMO SAÍDA
      pinMode (blue,OUTPUT); // LED DEFINIDO COMO SAÍDA
      pinMode (botao,INPUT); // BOTAO DEFINIDO COMO ENTRADA
    }
    
    // FUNÇÃO DEBOUNCE, TRATADA COMO INTEIRO POIS DEVE RETORNAR "0" OU "1"
    
                          int debounce (int anterior)
                           {
                              int atual = digitalRead (botao);
                                   if (anterior != atual)
                                     {
                                        delay(5);
                                        atual = digitalRead(botao);
                                     }
                                        return atual;
                            }
                            
    void loop() {
    estadoatualbotao = debounce(estadoantbotao); // LE O ESTADO DEPOIS DO DEBOUNCE
    
     if (estadoatualbotao != estadoantbotao){  // LE O BOTÃO APERTADO
      if (count==8){ // ZERA O CONTADOR QUANDO CHEGA A 8
        count=0;
      }
      if (estadoatualbotao==0) // RESOLVE PROBLEMA REFERENTE A CONTAGEM DUPLA QUANDO O BOTÃO ESTÁ APERTADO
      { 
        count--;
      }
      {
        count++; //AUMENTA CONTAGEM
        estadoantbotao = estadoatualbotao; // REDEFINE VALOR DO BOTÃO
      }
        if (count==1){ // ACENDE LED VERMELHO
        analogWrite (red, 255);
        analogWrite (green, 0);
        analogWrite (blue, 0);
        }
        if (count==2){ // ACENDE LED VERDE
        analogWrite (red, 0);
        analogWrite (green, 255);
        analogWrite (blue, 0);
         } 
        if (count==3){ // ACENDE LED AZUL
        analogWrite (red, 0);
        analogWrite (green, 0);
        analogWrite (blue, 255);
        
        }
        if (count==0){ // DESLIGA TODOS OS LEDS
        analogWrite (red, 0);
        analogWrite (green, 0);
        analogWrite (blue, 0);
        }
        if (count==4){ // ACENDE LED ROXO
        analogWrite (red, 127);
        analogWrite (green, 0);
        analogWrite (blue, 127);
        }
        if (count==5){ // ACENDE LED VERDE AZULADO
        analogWrite (red, 112);
        analogWrite (green, 219);
        analogWrite (blue, 219);
        } 
        if (count==6){ // ACENDE LED LARANJA
        analogWrite (red, 255);
        analogWrite (green, 50);
        analogWrite (blue, 0);
        }
        if (count==7){ // ACENDE LED BRANCO
        analogWrite (red, 255);
        analogWrite (green, 255);
        analogWrite (blue, 255);
        }
      }
    }

     

     

  2. Olá a todos... estou com o seguinte problema

     

    Utilizando um LED RGB, faça um projeto em que o LED deve alternar para as
    seguintes cores de acordo com a sequência em que um botão é pressionado:
    1. Inicialmente o LED se encontra desligado
    2. Ao pressionar o botão 1 vez, o LED deve ficar vermelho
    3. Ao pressionar o botão pela segunda vez, o LED deve ficar verde
    4. Ao pressionar o botão pela terceira vez, o LED deve ficar azul
    5. Ao pressionar o botão pela quarta vez, o LED deve ficar roxo (vermelho + azul)
    6. Ao pressionar o botão pela quinta vez, o LED deve ficar verde azulado (azul +
    verde)
    7. Ao pressionar o botão pela sexta vez, o LED deve ficar laranja (verde +
    vermelho)
    8. Ao pressionar o botão pela sétima vez, o LED deve ficar branco (verde + azul + vermelho)
    9. Ao pressionar o botão pela oitava vez, o LED deve apagar.

     

    Tentei fazer de várias formas, porém, não consegui, sempre da algum erro, o mais perto que consegui chegar foi com esse código... (tenho que usar o debouce como filtro)... Já não sei o que fazer... agradeço a todos pela ajuda... a ligação elétrica e igual ao do arquivo anexo, só que com um led RGB...

    const int red=8;
    const int green=10;
    const int blue=12;
    
    const int botao=2;
    
    boolean estadoantbotao = LOW;
    boolean estadoatualbotao = LOW;
    
    
    int count=0;
    
    void setup() {
      pinMode (red,OUTPUT);
      pinMode (green,OUTPUT);
      pinMode (blue,OUTPUT);
      pinMode (botao,INPUT);
    }
                          boolean debounce (boolean anterior)
                           {
                              boolean atual = digitalRead (botao);
                                   if (anterior != atual)
                                     {
                                        delay(5);
                                        atual = digitalRead(botao);
                                     }
                                        return atual;
                            }
    
    void loop() {
      estadoatualbotao = debounce(estadoantbotao);
      
      count=(count==4) ? 0 : count+1;
    
      
      if (estadoantbotao == LOW && estadoatualbotao == HIGH && count==1){
          
          analogWrite (red, 255);
          analogWrite (green, 0);
          analogWrite (blue, 0);
          }
         
        if (estadoantbotao == LOW && estadoatualbotao == HIGH && count==2){
        
        analogWrite (red, 0);
        analogWrite (green, 255);
        analogWrite (blue, 0);
        
        
        
        } 
        
        if (estadoantbotao == LOW && estadoatualbotao == HIGH && count==3){
        
        analogWrite (red, 0);
        analogWrite (green, 0);
        analogWrite (blue, 255);
        
        }
    
        
        
        if (estadoantbotao == LOW && estadoatualbotao == HIGH && count==0){
       
        analogWrite (red, 0);
        analogWrite (green, 0);
        analogWrite (blue, 0);
        
        }
    
         estadoantbotao = estadoatualbotao;
    
        }
           

     

    esquema.png

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!