Ir ao conteúdo
  • Cadastre-se
Luiz Henrique Moneche de A

Arduino Controle de cor de LED RGB via entrada PWM de arduino

Recommended Posts

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

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

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

×