//Declaracion de pines para el display de 7 segmentos
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 6;
int segF = 7;
int segG = 8;
// Declaracion de contador
int contador = 0;//contador arranca en cero
//Declaracion de pin para botonSumador
int botonSumador = 12;
int botonRestador = 11;
//Declaracion de variables para evitar lecturas falsas por rebote
unsigned long ultimoTiempoRebote = 0;
unsigned long delayRebote = 30;
int ultimoEstadobotonSumador = 0;
int estadobotonSumador = 0;
int ultimoEstadobotonRestador = 0;
int estadobotonRestador = 0;
void setup() {
//configuro todos los pines del display como salida
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
//configuro el botonSumador como entrada
pinMode(botonSumador, INPUT);
}
void hacerElCero() { //funcion para que el display muestre el cero
digitalWrite(segA, 0);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 0);
digitalWrite(segE, 0);
digitalWrite(segF, 0);
digitalWrite(segG, 1);
}
void hacerElUno() { //funcion para que el display muestre el uno
digitalWrite(segA, 1);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 1);
digitalWrite(segE, 1);
digitalWrite(segF, 1);
digitalWrite(segG, 1);
}
void hacerElDos() { //funcion para que el display muestre el dos
digitalWrite(segA, 0);
digitalWrite(segB, 0);
digitalWrite(segC, 1);
digitalWrite(segD, 0);
digitalWrite(segE, 0);
digitalWrite(segF, 1);
digitalWrite(segG, 0);
}
void hacerElTres() { //funcion para que el display muestre el tres
digitalWrite(segA, 0);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 0);
digitalWrite(segE, 1);
digitalWrite(segF, 1);
digitalWrite(segG, 0);
}
void hacerElCuatro() { //funcion para que el display muestre el cuatro
digitalWrite(segA, 1);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 1);
digitalWrite(segE, 1);
digitalWrite(segF, 0);
digitalWrite(segG, 0);
}
void hacerElCinco() { //funcion para que el display muestre el cinco
digitalWrite(segA, 0);
digitalWrite(segB, 1);
digitalWrite(segC, 0);
digitalWrite(segD, 0);
digitalWrite(segE, 1);
digitalWrite(segF, 0);
digitalWrite(segG, 0);
}
void hacerElSeis() { //funcion para que el display muestre el seis
digitalWrite(segA, 0);
digitalWrite(segB, 1);
digitalWrite(segC, 0);
digitalWrite(segD, 0);
digitalWrite(segE, 0);
digitalWrite(segF, 0);
digitalWrite(segG, 0);
}
void hacerElSiete() { //funcion para que el display muestre el siete
digitalWrite(segA, 0);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 1);
digitalWrite(segE, 1);
digitalWrite(segF, 1);
digitalWrite(segG, 1);
}
void hacerElOcho() { //funcion para que el display muestre el ocho
digitalWrite(segA, 0);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 0);
digitalWrite(segE, 0);
digitalWrite(segF, 0);
digitalWrite(segG, 0);
}
void hacerElNueve() { //funcion para que el display muestre el seis
digitalWrite(segA, 0);
digitalWrite(segB, 0);
digitalWrite(segC, 0);
digitalWrite(segD, 0);
digitalWrite(segE, 1);
digitalWrite(segF, 0);
digitalWrite(segG, 0);
}
void loop() {
int lecturabotonSumador = digitalRead(botonSumador); // Leemos el estado actual del botón
// Si la lectura ha cambiado (hubo un rebote o cambio real)
if (lecturabotonSumador != ultimoEstadobotonSumador) {
ultimoTiempoRebote = millis(); // Reiniciamos el temporizador de debounce
}
// Si ha pasado suficiente tiempo desde el último cambio
if ((millis() - ultimoTiempoRebote) > delayRebote) {
// Si el estado del botón ha cambiado
if (lecturabotonSumador != estadobotonSumador) {
estadobotonSumador = lecturabotonSumador;
// Solo actuamos cuando el botón se presiona (estado HIGH)
if (estadobotonSumador == 1) {
if (contador <= 9) { //pregunto si el valor del contador es menor a 9
contador ++;//sumo + 1 al contador (por ejemplo si el contador vale 8 le sumo 1 y el contador pasa a valer 9)
} else {
contador = 0;
}
}
}
}
// Guardamos el estado actual como el último estado
ultimoEstadobotonSumador = lecturabotonSumador;
if (contador == 0) { //pregunto si el valor del contador es cero
hacerElCero();
} else if (contador == 1) { //pregunto si el valor del contador es uno
hacerElUno();
} else if (contador == 2) { //pregunto si el valor del contador es dos
hacerElDos();
}if (contador == 3) { //pregunto si el valor del contador es tres
hacerElTres();
}if (contador == 4) { //pregunto si el valor del contador es tres
hacerElCuatro();
}if (contador == 5) { //pregunto si el valor del contador es tres
hacerElCinco();
}if (contador == 6) { //pregunto si el valor del contador es tres
hacerElSeis();
}if (contador == 7) { //pregunto si el valor del contador es tres
hacerElSiete();
}if (contador == 8) { //pregunto si el valor del contador es tres
hacerElOcho();
}if (contador == 9) { //pregunto si el valor del contador es tres
hacerElNueve();
}
int lecturabotonRestador = digitalRead(botonRestador); // Leemos el estado actual del botón
// Si la lectura ha cambiado (hubo un rebote o cambio real)
if (lecturabotonRestador != ultimoEstadobotonRestador) {
ultimoTiempoRebote = millis(); // Reiniciamos el temporizador de debounce
}
// Si ha pasado suficiente tiempo desde el último cambio
if ((millis() - ultimoTiempoRebote) > delayRebote) {
// Si el estado del botón ha cambiado
if (lecturabotonRestador != estadobotonRestador) {
estadobotonRestador = lecturabotonRestador;
// Solo actuamos cuando el botón se presiona (estado HIGH)
if (estadobotonRestador == 1) {
if (contador <= 9) { //pregunto si el valor del contador es menor a 9
contador --;//sumo + 1 al contador (por ejemplo si el contador vale 8 le sumo 1 y el contador pasa a valer 9)
} else {
contador = 0;
}
}
}
}
// Guardamos el estado actual como el último estado
ultimoEstadobotonRestador = lecturabotonRestador;
if (contador == 0) { //pregunto si el valor del contador es cero
hacerElCero();
} else if (contador == 1) { //pregunto si el valor del contador es uno
hacerElUno();
} else if (contador == 2) { //pregunto si el valor del contador es dos
hacerElDos();
}if (contador == 3) { //pregunto si el valor del contador es tres
hacerElTres();
}if (contador == 4) { //pregunto si el valor del contador es tres
hacerElCuatro();
}if (contador == 5) { //pregunto si el valor del contador es tres
hacerElCinco();
}if (contador == 6) { //pregunto si el valor del contador es tres
hacerElSeis();
}if (contador == 7) { //pregunto si el valor del contador es tres
hacerElSiete();
}if (contador == 8) { //pregunto si el valor del contador es tres
hacerElOcho();
}if (contador == 9) { //pregunto si el valor del contador es tres
hacerElNueve();
}
}