byte mat_num[16][7] = {
{ 1,1,1,1,1,1,0 }, //Digito 0
{ 0,1,1,0,0,0,0 }, //Digito 1
{ 1,1,0,1,1,0,1 }, //Digito 2
{ 1,1,1,1,0,0,1 }, //Digito 3
{ 0,1,1,0,0,1,1 }, //Digito 4
{ 1,0,1,1,0,1,1 }, //Digito 5
{ 1,0,1,1,1,1,1 }, //Digito 6
{ 1,1,1,0,0,0,0 }, //Digito 7
{ 1,1,1,1,1,1,1 }, //Digito 8
{ 1,1,1,0,0,1,1 }, //Digito 9
{ 0,0,0,0,0,0,0 }, //Digito Branco
};
byte btesq=12; // botão decremento (esquerda)
byte btdir=11; // botão incremento (direita)
int number = 0; // número a ser mostrado no display deve ser int (inteiros posit. e negat.)
void setup(){
for (int i = 2; i < 10; i++)
{
pinMode(i, OUTPUT); //conexão pinos dos 7 segmentos + o ponto
}
pinMode(btesq, INPUT_PULLUP);
pinMode(btdir, INPUT_PULLUP);
}
void loop() {
if (digitalRead(btdir) == 0 ){ // verifica se o botão direito foi acionado
number += 1;
while (digitalRead(btdir) == 0) {} // loop vazio - aguarda soltar o botão (evita a númeração constante
}
if (!digitalRead(btesq)){ // verifica se o esquerdo foi acionado
number -= 1;
while (!digitalRead(btesq)) {} // loop vazio - aguarda soltar o botão (evita a númeração constante
}
// reseta em caso de estouro (<0 ou >9)
if (number < 0) {number = 9;}
if (number > 9) {number = 0;}
// mostra o número no display
for (int j = 2; j < 9; j++) {
digitalWrite(j, mat_num[number][j-2]);
}
delay(150); // evitar que o botão seja acionado em um mesmo clique
}