Sistema de turnos con led de 7 segmentos y pulsadores
int contador = 0; //Variable asociada al contador
int presionado1; //Variable para el antirrebote del pulsador aumentar
int presionado2; //Variable para el antirrebote del pulsador disminuir
int pulsador_disminuir = 2; //Pulsador conectado al pin 2
int pulsador_aumentar = 4; //Pulsador conectado a pin 4
void encender(int a, int b, int c, int d, int e, int f, int g)
{
//Funcion que permite mostrar los numeros del 0 al 9
//Asigna un segmento del display a cada pin
digitalWrite (7,a); //Se reciben 7 variables y se asignan
digitalWrite (8,b); //a cada una de las salidas
digitalWrite (9,c);
digitalWrite (10,d);
digitalWrite (11,e);
digitalWrite (12,f);
digitalWrite (13,g);
}
void setup() {
//Inicializa los pines como entradas/salidas digitales
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(4, INPUT); //Pulsador aumentar como entrada digital
pinMode(2, INPUT); //Pulsador disminuir como entrada digital
}
void loop() {
//Condicionales para antirrebote y uso del pulsador aumentar
if (digitalRead(pulsador_aumentar) == LOW)
{
presionado1 = 1; //Variable del antirrebote que cambia cuando se presiona el pulsador
}
if (digitalRead(pulsador_aumentar) == HIGH && presionado1 == 1)
{
presionado1 = 0; //Se reinicia la variable antirrebote
contador++; //Aumenta el contador
if (contador > 9)
{
contador = 9; //Si el contador esta en 9 y se aumenta, sigue mostrando el 9
}
}
//Condicionales para antirrebote y uso del pulsador disminuir
if (digitalRead(pulsador_disminuir) == LOW)
{
presionado2 = 1; //Variable del antirrebote que cambia cuando se presiona el pulsador
}
if (digitalRead(pulsador_disminuir) == HIGH && presionado2 == 1)
{
presionado2 = 0; //Se reinicia la variable antirrebote
contador--; //Disminuye el contador
if (contador < 0) //Si el contador esta en 0 y se disminuye, sigue mostrando el 0
{
contador = 0;
}
}
switch (contador)
{
//Dependiendo del contador, se muestra el numero indicado
//Envia estados (1 y 0) al display dependiendo del numero a mostrar
case 0:
encender (1, 1, 1, 1, 1, 1, 0); //Muestra el numero 0
break;
case 1:
encender (0, 1, 1, 0, 0, 0, 0); //Muestra el numero 1
break;
case 2:
encender (1, 1, 0, 1, 1, 0, 1); //Muestra el numero 2
break;
case 3:
encender (1, 1, 1, 1, 0, 0, 1); //Muestra el numero 3
break;
case 4:
encender (0, 1, 1, 0, 0, 1, 1); //Muestra el numero 4
break;
case 5:
encender (1, 0, 1, 1, 0, 1, 1); //Muestra el numero 5
break;
case 6:
encender (1, 0, 1, 1, 1, 1, 1); //Muestra el numero 6
break;
case 7:
encender (1, 1, 1, 0, 0, 0, 0); //Muestra el numero 7
break;
case 8:
encender (1, 1, 1, 1, 1, 1, 1); //Muestra el numero 8
break;
case 9:
encender (1, 1, 1, 0, 0, 1, 1); //Muestra el numero 9
break;
}
}
Comentarios
Publicar un comentario