Ir ao conteúdo
  • Cadastre-se

Luiz Henrique Moneche de A

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Tudo que Luiz Henrique Moneche de A postou

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

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!