Ir ao conteúdo
  • Cadastre-se
Hiago Martins

Arduino Problema com programa no arduino

Recommended Posts

Galera, to com um problema nesse sketch. A intenção era fazer com que um display 7 segmentos contasse de 0 à 9, sendo que os digitos devem ser alterados apenas quando o botão for pressionado. O meu problema é que os digitos não alteram de forma alternada (0,1,2,3,4...9), eles ficam mudando de 2 em 2 (0,2,4...8).

 

Alguém pode me ajudar???

 

#define pinBotao 7

byte portas[4] = {5,4,3,2};
int numero = 0;
boolean botaoAtu = false;
boolean botaoAnt = false;  // A,B,C,D
byte displayConfig[10][4] = {{0,0,0,0}, //Digito 0
                             {0,0,0,1}, //Digito 1
                             {0,0,1,0}, //Digito 2
                             {0,0,1,1}, //Digito 3
                             {0,1,0,0}, //Digito 4
                             {0,1,0,1}, //Digito 5
                             {0,1,1,0}, //Digito 6
                             {0,1,1,1}, //Digito 7
                             {1,0,0,0}, //Digito 8
                             {1,0,0,1}}; //Digito 9
                             


void setup() {
  pinMode(pinBotao, INPUT);

  for (int nP = 0; nP <= 3; nP++) {
      pinMode(portas[nP], OUTPUT);
  }
}

void loop() {
  botaoAtu = digitalRead(pinBotao);

  if (botaoAtu && !botaoAnt) {
     numero++;

     if (numero > 9) {
        numero = 0; 
     }
  }
  botaoAnt = botaoAtu;

  for (int nD = 0; nD <= 3; nD++) {
     digitalWrite(portas[nD], displayConfig[numero][nD]);
  }
     
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

Acho que o que está faltando aí é o "debounce" do botão. É uma técnica utilizada para filtrar os ruídos gerados por contatos mecânicos. O que acontece é que o uC acaba "detectando" vários toques onde deveria ser um toque só. Procure no Google por "button debounce".

Basicamente seria assim: assim que for detectado um toque deve-se aguardar um tempo, que varia de 10 a 100ms, após esse tempo testa-se a entrada novamente e se ainda for detectado o toque, confirma-se que o botão está realmente pressionado e o programa segue.

 

Abrass

  • Curtir 1

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

×