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

Entradas populares de este blog

Alarma visual (Led con ultrasonido)

Teclado matricial 4x4 con LCD