Contador 00-99 con Multiplexación







/* Contador decimal de dos Digigitos en 7 Segmentos usando multiplexacion

 Conexiones:  Las conexiones entre el Arduino y el Display deben realizarse
              con una resistencia de 1K ohmio.

 ARDUINO  -    Display 7 Segmentos (catodo comun)
   2            a
   3            b
   4            c
   5            d
   6            e
   7            f
   8            g
   9            P
  
   10           COM digito izquierdo usando Transistor NPN
   11           COM digito derecho  usando Transistor NPN
*/

int retardo=10;       // tiempo que dura encendido cada 7 seg (10 mili segundos)
int var=0;            // Valor del digito que se va a desplegar por el 7 seg.

int unidad=0;         // cuenta las unidades (derecha)
int decena=0;         // cuenta las decenas (izquierda)
int conmutador=0;     // multiplexacion de uno a otro 7 segmentos
int cont=0;           // contador de ciclos de espera para cambiar de numero

void setup() {              
  pinMode(2, OUTPUT);  //seg a
  pinMode(3, OUTPUT);  //seg b
  pinMode(4, OUTPUT);  //seg c
  pinMode(5, OUTPUT);  //seg d
  pinMode(6, OUTPUT);  //seg e
  pinMode(7, OUTPUT);  //seg f
  pinMode(8, OUTPUT);  //seg g
 
  pinMode(10, OUTPUT);  // activa digito 1 derecha (unidad)
  pinMode(11, OUTPUT);  // activa digito 2 izquierda (decena)
   
}

void loop() {
 
 delay(10);               // tiempo que dura encendido cada 7seg antes de cambiar al otro

 cont++;                      // incrementa el contador de ciclos en Uno
 if (cont==100){              // cada cuanto tiempo (ciclos)cambia un numero
      cont=0;                 // inicializa el contador de ciclos  
    unidad=unidad+1;          // incrementa la unidad, primer 7seg
    if (unidad >= 10){        // cuando la unidad llegue a 10 incrementa la decena
        decena=decena+1;      // incrementa la decena,  segundo 7seg
      unidad=0;               // regresa la unidad a cero
      if (decena>=10){        // cuando la decena llegue a 10 se inicializa a cero   
       decena=0;
      }     
    }
 }

   
    if (conmutador == 0) {    // hace la multiplexacion conmutando entre los dos 7seg  izq y der
      digitalWrite(10, 1);    // enciende el derecho
      digitalWrite(11, 0);    // apaga el izquierdo
      var=unidad;             // iguala la variable que escribe el numero en el 7seg al valor de la unidad
      conmutador=1;           // cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
     
    }
    else{
     digitalWrite(10, 0);       // apaga el derecho
      digitalWrite(11, 1);      // enciende el izquierdo
      var=decena;               // iguala la variable que escribe el numero en el 7seg al valor de la decena
      conmutador=0;             // cambia el conmutador para que en el siguiente ciclo cumpla la otra condicion
     
    }
 
    switch (var) {
    case 1:                 //escribe en el 7seg el numero 1
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 0);
      digitalWrite(8, 0);
     break;
    case 2:                //escribe en el 7seg el numero 2
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 0);
      digitalWrite(5, 1);
      digitalWrite(6, 1);
      digitalWrite(7, 0);
      digitalWrite(8, 1);
     break;     
    case 3:               //escribe en el 7seg el numero 3
       digitalWrite(2, 1);
       digitalWrite(3, 1);
       digitalWrite(4, 1);
       digitalWrite(5, 1);
       digitalWrite(6, 0);
       digitalWrite(7, 0);
       digitalWrite(8, 1);
      break;
    case 4:               //escribe en el 7seg el numero 4
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 5:               //escribe en el 7seg el numero 5
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
      digitalWrite(6, 0);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 6:               //escribe en el 7seg el numero 6
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
      digitalWrite(6, 1);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 7:              //escribe en el 7seg el numero 7
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 0);
      digitalWrite(8, 0);
     break;
    case 8:              //escribe en el 7seg el numero 8
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
      digitalWrite(6, 1);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
      break;
    case 9:               //escribe en el 7seg el numero 9
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
      digitalWrite(6, 0);
      digitalWrite(7, 1);
      digitalWrite(8, 1);
     break;
    case 0:                //escribe en el 7seg el numero 0
       digitalWrite(2, 1);
       digitalWrite(3, 1);
       digitalWrite(4, 1);
       digitalWrite(5, 1);
       digitalWrite(6, 1);
       digitalWrite(7, 1);
       digitalWrite(8, 0);
      break;
          
    default:
       digitalWrite(2, 0);
       digitalWrite(3, 0);
       digitalWrite(4, 0);
       digitalWrite(5, 0);
       digitalWrite(6, 0);
       digitalWrite(7, 0);
       digitalWrite(8, 0);
     
  }
 
 }

Comentarios

Entradas populares de este blog

Alarma visual (Led con ultrasonido)

Sistema de turnos con led de 7 segmentos y pulsadores

Teclado matricial 4x4 con LCD