/**
Programa que iniciar un contador de 0 a 9 con un display 7 segmentos
al presionar el pulsador
**/
#define DIGITOS_TOTAL 10
#define PINES_TOTAL 7
#define PIN_A 22
#define PIN_B 23
#define PIN_C 2
#define PIN_D 4
#define PIN_E 16
#define PIN_F 19
#define PIN_G 5
int pines[PINES_TOTAL] = {
PIN_A,
PIN_B,
PIN_C,
PIN_D,
PIN_E,
PIN_F,
PIN_G
};
// MAPA DE NUMEROS PARA CATODO COMUN EN DISPLAY 7 SEGMENTOS
int digitos[DIGITOS_TOTAL][PINES_TOTAL] = {
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, // 0
{LOW , HIGH, HIGH, LOW, LOW, LOW, LOW}, // 1
{HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH}, // 2
{HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH}, // 3
{LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH}, // 4
{HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH}, // 5
{HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH}, // 6
{HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW}, // 7
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH}, // 8
{HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH} // 9
};
void limpiar();
void setup() {
Serial.begin(9600);
pinMode(14, INPUT_PULLUP);
for(int pin = 0; pin < PINES_TOTAL; pin++) {
pinMode(pines[pin], OUTPUT);
}
}
void loop() {
if (digitalRead(14) == 0) {
for(int numero = 0; numero < DIGITOS_TOTAL; numero++) {
mostrarDigito(numero);
delay(1000);
limpiar();
}
}
}
void mostrarDigito(int numero) {
for(int pin = 0; pin < PINES_TOTAL; pin++) {
digitalWrite(pines[pin], digitos[numero][pin]);
}
}
void limpiar() {
for(int pin = 0; pin < PINES_TOTAL; pin++) {
digitalWrite(pines[pin], LOW);
}
}