ola pessoal, preciso de um contador que conte 12 pulsos em uma Input, e incremente uma outra variavel rev em +1 toda vez que essa chave tactil for apertada 12 vezes.

vejam o codigo que estou usando, esta quase dando certo, porem acho que o erro esta no IF, pq ele soh incrementa a variavel rev se eu mantenho a chave pressionada, lembrando que eu preciso receber 12 sinais para minha variavel rev incrementar +1 :

#define CONTAR 8

byte tabela_7_seg [10] = {
B01111110, // = Digito 0
B00001100, // = Digito 1
B10110110, // = Digito 2
B10011110, // = Digito 3
B11001100, // = Digito 4
B11011010, // = Digito 5
B11111010, // = Digito 6
B00001110, // = Digito 7
B11111110, // = Digito 8
B11001110, // = Digito 9
};

int contagem = 0, inc_dec =1, rev=0;

void setup()
{

//Configura os pinos digitais de 1 até 7 como saída digital
DDRD = B11111110;

//Configura os pinos onde os botões estão conectados
pinMode(CONTAR, INPUT);


}

void loop()
{

// Lê o botão de Contagem
if (digitalRead(CONTAR)== LOW)
{
contagem += inc_dec;

//Reseta a contagem em caso de estouro
if (contagem = 12)
{
rev = rev+1;
contagem=0;
if (rev>10)
{rev=0;}
}
//Aguarda a tecla de contagem ser solta
while(digitalRead(CONTAR)== LOW)
{

}

}


//Busca o valor da contagem na matriz que decodifica os 7 segmentos e envia para o display

PORTD = tabela_7_seg[rev];

delay(1000);}

acho que devo mudar por um FOR mas n sei como fazer isso, à quem puder me ajudar agradeço muito..

Exibições: 528

Responder esta

Respostas a este tópico

desconsiderem o seguinte comentario: //Reseta a contagem em caso de estouro

tem um errinho de sintaxe aqui ó:

if (contagem = 12) 

deveria ser assim:

if (contagem == 12) 

ou assim:

if (contagem > 11) 


volatile int cont=0;
int rev=0;
byte tabela_7_seg [10] = {
B00000000, // = Digito 0
B00010000, // = Digito 1
B00100000, // = Digito 2
B00110000, // = Digito 3
B01000000, // = Digito 4
B01010000, // = Digito 5
B01100000, // = Digito 6
B01110000, // = Digito 7
B10000000, // = Digito 8
B10010000, // = Digito 9
};
void setup()
{
Serial.begin(9600);
rev=0;
DDRB = B001111;
PORTB = tabela_7_seg[rev];
attachInterrupt(0, blink, CHANGE);
}

void loop()
{
if (cont==2);
{(cont=0);
rev=rev+1;
PORTB = tabela_7_seg[rev];
}
}


void blink()
{
int cont++; if (cont == 12); { int rev++ ; cont = 0 ;}
}

e....?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço