martes, 22 de abril de 2014

Display de 7 segmentos (1 dígito)

Introducción teórica
Un display de segmentos (o visualizador) es un componente electrónico que se utiliza para representar números. Como su propio nombre indica y, como se puede observar en la imagen siguiente, el display está compuesto por 7 segmentos, los cuales se encenderán y/o apagarán en función del número a representar. De forma interna, se asemeja a siete LEDs conectados estratégicamente formando el número 8, aunque externamente dicha semejanza no se observa, de ahí su simplicidad.



Cada uno de los segmentos que componen este display se denominan a, b, c, d, e, f y g, tal y como se muestra a continuación.

Para mostrar el número 0, tendremos que encender a, b, c, d, e y f.
Para el número 2, tendríamos a, b, g, e y d.
Y de la misma forma para cualquier otro número.
El P simboliza el punto decimal.

En cuanto a la clasificación, existen de dos tipos:
1. Display de segmentos de cátodo común, en la que todos los cátodos de los LEDs estan internamente unidos a una patilla común, la cual está conectada al potencial negativo de la placa.
2. Display de segmentos de ánodo común, en la que todos los ánodos se encuentran al positivo.

Para nuestro caso, disponemos de uno de tipo cátodo común, el LMS5161AS (luz roja, tamaño de dígito 0.56'').


Conexiones
En lo que se refiere a las conexiones, tenemos que tener en cuenta cada segmento a qué pin de la protoboard lo vamos a conectar, para poder efectuar una llamada a los pines correcta. En nuestro caso, hemos hecho las siguientes conexiones (puede variar la designación según convenga):

Segmento a - pin 7
Segmento b - pin 8
Segmento c - pin 9
Segmento d - pin 10
Segmento e - pin 11
Segmento f - pin 12
Segmento g - pin 13



Ejemplo

Vamos a realizar un ejemplo en el cual nuestro display irá mostrando de forma ascendente todos los números con un intervalo de separación de 1 segundo.
Aquí tenemos el sketch:


int pausa=1000; // Variable que define el intervalo
                // de tiempo entre cada digito
 
void setup()
{
  pinMode(7, OUTPUT);  // Asignación de las salidas digitales
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}
 
void display (int a, int b, int c, int d, int e, int f, int g)
// Funcion del display
{
  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 loop() //Funcion principal
// Dependiendo de cada dígito, se envía a la función display
// los estados (0 y 1) a cada uno de los segmentos
{
  display (1,1,1,1,1,1,0); //escribe 0
  delay(pausa);
  display (0,1,1,0,0,0,0); //escribe 1
  delay(pausa);
  display (1,1,0,1,1,0,1); //escribe 2
  delay(pausa);
  display (1,1,1,1,0,0,1); //escribe 3
  delay(pausa);
  display (0,1,1,0,0,1,1); //escribe 4
  delay(pausa);
  display (1,0,1,1,0,1,1); //escribe 5
  delay(pausa);
  display (1,0,1,1,1,1,1); //escribe 6
  delay(pausa);
  display (1,1,1,0,0,0,0); //escribe 7
  delay(pausa);
  display (1,1,1,1,1,1,1); //escribe 8
  delay(pausa);
  display (1,1,1,0,0,1,1); //escribe 9
  delay(pausa);
}
Fuente: http://rcmcomputointegrado.blogspot.com.es/
A continuación mostramos el ejemplo mediante este vídeo:

Y esto es todo. No dudéis en comentar y en preguntar cualquier duda.
Gracias por la atención.
I.

13 comentarios:

  1. Como puedo hacer q sea por un ciclo for. Para que ascienda y descienda el contador?

    ResponderEliminar
    Respuestas
    1. for (i = 0; i < 10; i++)
      {
      if (i = 0)
      {
      //aqui pones la combinacion para el 0
      }

      if... //sigues asi con cada numero hasta el 9

      }



      espero que te sirva de ayuda

      Eliminar
  2. Como descargasteis la libreria en archivo ZIP

    ResponderEliminar
  3. es void loop se repite siempre, os ino prueba con el boton de reset

    ResponderEliminar
  4. a mi no me funciono la verdad no se porque si hay puse el codigo tal cual y el montaje

    ResponderEliminar
  5. Que debo hacer para que el número se repita sola una vez, ya que en tu codigo los numeros se vuelven a repetir infinitamente. Espero tu respuesta y gracias por tu aportacion.

    ResponderEliminar
    Respuestas
    1. Ejecutalo en el setup en todo caso o has una variable que solo muestre cuando tenga un determinado valor

      Eliminar
  6. unicamente me salen los numeros 1,4,7 y 9

    ResponderEliminar