int pino, numero;
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
};
const byte btesq = A0; // botão decremento (esquerda)
const byte btdir = A1; // botão incremento (direita)
int number = 0; // número a ser mostrado no display deve ser int (inteiros posit. e negat.)
void setup() {
pinMode(2, OUTPUT); //PINO 2 -> segmento A
pinMode(3, OUTPUT); //PINO 3 -> segmento B
pinMode(4, OUTPUT); //PINO 4 -> segmento C
pinMode(5, OUTPUT); //PINO 5 -> segmento D
pinMode(6, OUTPUT); //PINO 6 -> segmento E
pinMode(7, OUTPUT); //PINO 7 -> segmento F
pinMode(8, OUTPUT); //PINO 8 -> segmento G
pinMode(9, OUTPUT); //PINO 9 -> segmento PONTO
pinMode(btesq, INPUT_PULLUP);
pinMode(btdir, INPUT_PULLUP);
}
void loop() {
if (analogRead(btdir) == 0 ){ // verifica se o botão direito foi acionado
number += 1;
while (analogRead(btdir) == 0) {} // loop vazio - aguarda soltar o botão (evita a númeração constante
}
if (!analogRead(btesq)){ // verifica se o esquerdo foi acionado
number -= 1;
while (!analogRead(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
}