#define PIN_A 22
#define PIN_B 23
#define PIN_C 4
#define PIN_D 17
#define PIN_E 18
#define PIN_F 21
#define PIN_G 19
#define PIN_PULSADOR 14
#define PINES_TOTAL 7
#define DIGITOS 10
uint8_t pines[PINES_TOTAL] = {
PIN_A, // A
PIN_B, // B
PIN_C, // C
PIN_D, // D
PIN_E, // E
PIN_F, // F
PIN_G // G
};
char segmentos[PINES_TOTAL] = {
'A',
'B',
'C',
'D',
'E',
'F',
'G',
};
int numeros[DIGITOS][PINES_TOTAL] = {
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW},
{LOW , HIGH, HIGH, LOW, LOW, LOW, LOW},
{HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH},
{HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH},
{LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH},
{HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH},
{HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH},
{HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW},
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},
{HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH}
};
int digitoMostrado = 0;
int botonFuePresionado = 0;
int puedeIncrementar = 0;
void mostrarDigito(int digito);
void limpiar();
void setup() {
Serial.begin(9600);;
pinMode(PIN_PULSADOR, INPUT_PULLUP);
for(uint8_t segment = 0; segment < PINES_TOTAL; segment++) {
pinMode(pines[segment], OUTPUT);
}
}
void loop() {
if (digitalRead(PIN_PULSADOR) == 0) {
if (puedeIncrementar == 1) {
puedeIncrementar = 0;
digitoMostrado++;
if (digitoMostrado >= DIGITOS){
digitoMostrado = 0;
}
limpiar();
}
botonFuePresionado = 1;
mostrarDigito(digitoMostrado);
delay(10);
} else {
if (botonFuePresionado == 1) {
botonFuePresionado = 0;
puedeIncrementar = 1;
}
delay(10);
}
}
void mostrarDigito(int digito) {
for(int pin = 0; pin < PINES_TOTAL; pin++) {
digitalWrite(pines[pin], numeros[digito][pin]);
}
}
void limpiar() {
for(int pin = 0; pin < PINES_TOTAL; pin++) {
digitalWrite(pines[pin], LOW);
}
}