#7 AVANZAR ES LO QUE CUENTA

Introducción

El marcador en un estadio,una calculadora son algunos ejemplos de donde podemos encontrar tablero de segmentos para números. En este ejemplo revisamos una manera muy simple de contar desde 0 a 9999. Debemos tener en cuenta que el display puede usar 7 pines diferentes para cada segmento, además un pin adicional par el punto y cuatro pines para seleccionar el dígito.  Para que entiendas un poco mas de como funciona un display 7 segmentos de 4 dígitos, puedes acceder a este link donde encontraras una imagen relacionada con el display usado en este ejemplo, recuerda que en tu caso podría ser uno diferente, recomendamos ver el datasheet

Pasos a seguir:

 

#1   Armar el circuito según la imagen

#2   Abrir el IDE de Arduino y conectar la tarjeta PICARO al computador

#3   Seleccionar el tipo de tarjeta como Arduino Uno

#4   Elegir el puerto serial en que se encuentra conectada la tarjeta PICARO

#5   Copiar el código de ejemplo al IDE, compilarlo y subirlo

Listado de componentes :

Código:

El código cuenta con arreglos numéricos para poder crear los números en el display, de igual manera se indicara por medio de la activación  el dígito que mostrara ese número, en este caso es un display de 4 digitos. En este ejemplo utilizaremos sentencias como for y switch case.

//7 Segmentos de display

int a = 12;    //Cada segmento del display se indica por medio de una letra a la cual  

int b = 8;      // se le asignara un pin de nuestro Picaro

int c = 4;

int d = 6;

int e = 7;

int f = 11;

int g = 3;

 

// digitos de Display

int dg1 = 2;      // Por medio de estos pines seleccionaremos cual de los 4 dígitos queremos activar.

int dg2 = 9;      

int dg3 = 10;

int dg4 = 13;


//Punto

int dp=5;   // Se declara que pin activara el punto.


//Velocidad

int vel=5;   // Se declara la velocidad en que se realizara el conteo.




int mil,cien,dec,uni;      //Unidades,decenas, centenas y millares


byte segmentos[7] = { a,b,c,d,e,f,g };

byte orden_digitos[4] = { dg1,dg2,dg3,dg4 };

byte digitos[4][4] =     // Orden en el cual se activaran los dígitos

                    { { 0,0,0,1 },

                      { 0,0,1,0 },

                      { 0,1,0,0 },

                      { 1,0,0,0 }

                    };

byte siete_segmentos_digitos[10][7] =        //Se crea el arreglo numérico para asignar los digitos al 

                               { { 1,1,1,1,1,1,0 }, // = 0     //display 7 segmentos

                                 { 0,1,1,0,0,0,0 }, // = 1

                                 { 1,1,0,1,1,0,1 }, // = 2

                                 { 1,1,1,1,0,0,1 }, // = 3

                                 { 0,1,1,0,0,1,1 }, // = 4

                                 { 1,0,1,1,0,1,1 }, // = 5

                                 { 1,0,1,1,1,1,1 }, // = 6

                                 { 1,1,1,0,0,0,0 }, // = 7

                                 { 1,1,1,1,1,1,1 }, // = 8

                                 { 1,1,1,0,0,1,1 } // = 9

                               };

void EscribeDigito(byte digito, byte numero) {

  int secuencia = 0;

 

  ActivarDigito(digito);      //Activa número

  

  //Escribe Numero

  for (byte i = 0; i < 7; i++){

    digitalWrite(segmentos[secuencia], siete_segmentos_digitos[numero][i]);

    ++secuencia;

  }

}


void ActivarDigito(int x){    

  digitalWrite(dg1, HIGH);

  digitalWrite(dg2, HIGH);

  digitalWrite(dg3, HIGH);

  digitalWrite(dg4, HIGH);

  switch(x){                                // Utilizamos la sentencia Case, donde se compara la variable (x) con 

    case 1:                                   // cada caso y de esta manera tomar accion segun el dato leido

      digitalWrite(dg1, LOW);

      break;

    case 2:

      digitalWrite(dg2, LOW);

      break;

    case 3:

      digitalWrite(dg3, LOW);

      break;

    default:

      digitalWrite(dg4, LOW);

      break;

  }

}

 

void setup(){

  int i;

  //Inicializar Pines

  for(i=2; i <= 13;i++)

     pinMode(i,OUTPUT);

}


 void loop(){

    start();

}




void start(){                          //funcion para contar de 0 a 9999

    for(mil=0;mil<=9;mil++){         //Al llegar cien= 9 se incrementa la variable mil

      for(cien=0;cien<=9;cien++){       //Al llegar dec= 9 se incrementa la variable cien

          for(dec=0;dec<=9;dec++){      //Al llegar uni= 9 se incrementa la variable dec

               for(uni=0;uni<=9;uni++){   //Se incrementa el contador de uni hasta llegar a 9

                   EscribeDigito(1, uni);

                   delay(vel);

                   EscribeDigito(2, dec);

                   delay(vel);

                   EscribeDigito(3, cien);

                   delay(vel);

                   EscribeDigito(4, mil);

                   delay(vel);

               }

          }

      }

  }

 

Demostración

Que tal si intentas realizar un Reloj, solo debes tener en cuenta que en caso de un reloj un minuto es formado por 60 segundos. Con solo cambiar un poco el código podrás hacerlo.

¿En busca del Kit PICARO?

Con el PICARO Starter Kit podrás realizar estos ejemplos ¡y mucho más!
Producto Chileno. Encuéntralo en MCI Electronics.

Contacto

Direccion Luis Thayer Ojeda 0115 Of. 1105, Providencia, Santiago, Chile.

Phone: +56 2 2333 9579 / +56 2 2231 9268

Horario Lunes a Viernes de 8:00 a 18:00

Nosotros

En MCI Electronics, estamos aquí para mantener la industria en movimiento. Nuestro objetivo es difundir y hacer accesible el uso de la electrónica a todo aquel que tenga el interés. Para ello nos esforzamos para traer los mejores componentes y módulos de manera que puedas aprender desarrollando tus propios proyectos.

Somos tu aliado en electrónica.

Suscríbete a nuestro boletín