En esta entrada entenderás como funciona la multiplexación y veremos como multiplexar un display de 7 segmentos con Arduino, el cual podrás aplicarlo para display de 7 segmentos de 2 dígitos, 3 dígitos, 4 dígitos, etc.

Antes que nada si no has visto todas las entradas que tenemos de Arduino, pues Mira los 👉 TUTORIALES DE ARDUINO

Multiplexar Display 7 Segmentos con Arduino

Tal y como lo vimos en la entrada pasada del Display de 7 Segmentos con Arduino, vimos que para poder usar este periferico en nuestra placa, vamos a tener que obligatoriamente ocupar 7 pines de nuestro Arduino, por lo tanto, el solo hecho de pensar en usar 2 displays, indicaría que deberíamos usar 14 pines del Arduino, lo cual comenzaría a volver inviable nuestros proyectos.

Sin embargo, para eso vamos a utilizar el concepto de Multiplexación, el cual nos va a permitir usar únicamente los 7 pines del Arduino que se conectan a un diplay sencillo y unos pines adicionales para el control, es decir si conectamos un display de 7 segmentos de 2 dígitos con arduino vamos a necesitar 2 pines de control (9 pines en total), si es de 4 dígitos serían 4 pines de control (11 pines en total del arduino).

displays 7 segmentos varios digitos

Multiplexación Display 7 Segmentos

La multiplexación de un Display, simplemente consiste en encender un único display, mostrar el numero y luego apagarlo, para encender el display que le sigue. El truco de encender y apagar el display a una alta velocidad, permite engañar al ojo humano, y tener la sensación de que todos los displays se encuentran energizados al mismo tiempo, pero en realidad, si lo vemos en cámara lenta, los displays de 7 segmentos de ánodo o cátodo común están haciendo la siguiente secuencia de multiplexación:

Multiplexación Display 7 Segmentos

Vemos que en cada segmento se le envia la secuencia del numero que se desea mostrar, y en las flechas de abajo indican la activación del respectivo display, donde si es ánodo común, indica que con un transistor PNP vamos a colocarlo a positivo para cerrar el circuito, por el contrario si es un display de catodo común, usamos un transistor NPN para mandar el display a tierra y cerrar el circuito.

Conexión del Display 7 Segmentos con Arduino – Multiplexación

Varios canales en YouTube y paginas en la web muestran que los pines de control que Activan cada display los conectan directamente a los pines del Arduino, y envían la secuencia de HIGH y LOW para activar cada display y con esto  parece que cerraría el circuito a GND y ya está.

Pero NO!!!. El consumo típico de cada segmento, (como de cada LED) es de entre 15 y 20mA. Como tenemos 8 segmentos, pensemos en el caso en el que mostramos el numero 8 junto con el punto decimal, el consumo será de 8 x 15 = 120 mA y pudiendo llegar a 160mA. Esto es más de lo que aguanta un Arduino que son 40mA, entonces corremos el riesgo de quemar nuestra placa.

Entonces, para evitar este problema, debemos usar la multiplexación a través de transistores NPN para cátodo común y PNP para ánodo común, configurados como switches.

Cátodo Común

Display de 7 Segmentos Catodo común

Aqui vemos la conexión de displays de 7 segmentos de cátodo común con transistores NPN (2N3904) donde poniendo LOW en los pines de control (la base del transistor) los transistores están al corte, y ningún digito puede iluminarse. Si ponemos tensión en el pin de más a la derecha su transistor se satura y permite la salida a Ground del primer digito que encenderá los segmentos que le indiquen los pines del a al g.

 

Ánodo Común

Display 7 Segmentos Anodo Común

En este caso la conexión de displays de 7 segmentos de ánodo común con transistores PNP (2N3906) donde poniendo HIGH en los pines de control (la base del transistor) los transistores están al corte, y ningún digito puede iluminarse. Si ponemos LOW en el pin de más a la derecha su transistor se satura y permite la salida a VCC del primer digito que encenderá los segmentos que le indiquen los pines del a al g.

Display de 7 Segmentos 4 Dígitos con Arduino – Ejemplo con Código

El circuito que vamos a implementar en esta entrada es el siguiente, donde nos vamos a valer de un Display 7 Segmentos de 4 Digitos con Arduino, sabes que si no tienes el display de 7 segmentos de 4 digitos, puedes reemplazarlo por 4 displays sencillos, pero deberas unir todos los segmentos en el protoboard, es decir unir todos los segmentos A, todos los segmentos B, y asi sucesivamente.

Display 4 digitos

Display 7 Segmentos de 4 Digitos con Arduino

A continuación te dejo el código del Display de 7 Segmentos con Arduino para que te sirva como ejemplo y entiendas el funcionamiento de este periférico:

Que les a parecido esta entrada? Si te ha gustado puedes compartirlo con tus amigos y suscribirte al canal para que sigas aprendiendo mucho más. Puedes suscribirte también por Correo electrónico a este sitio web para saber cuando hayan nuevas publicaciones, el formulario esta en la barra derecha de esta página, es muy fácil inscribirse.

Multiplexar Display 7 Segmentos con Arduino
5 (100%) 3 vote[s]

Esta entrada tiene 6 comentarios

  1. Gracias!!, tratare de hacerlo con RTC, y desplegar solo las horas. Buen aporte.

    1. De nada Abdul, me alegro que te haya servido. Saludos.

  2. si quisiera hacer que contara de 25 min a 0 tendria quecambiar el codigo general y la parte de los dig[4]

    1. No cambia el código no. Solo cambia la variable que lleva la cuenta, en este caso tempor quien debe decrementar, sería tempor–; E claro adicionando la lógica de tu programa. Saludos.

  3. Buenísimo Sergio, me has ayudado mucho para recordar la implementación de unos displays multiplexados. Mi aporte seria el siguiente : en la función mostrar() se puede utilizar el operador % que es modulo residuo de la división de un numero entero. es ideal para descomponer números enteros.
    Hice uno de seis dígitos 999999 para hacer unas pruebas de desbordamiento en micros de 8 Bits y su uso en micros de 32 bits quedando así

    int dig[6]; //Declarar las variables

    dig[5]=tempor/100000;
    dig[4]=(tempor % 100000)/10000; // básicamente es una división con residuo solo se toma el residuo
    dig[3]=(tempor % 10000)/1000;
    dig[2]=(tempor % 1000)/100;
    dig[1]=(tempor % 100)/10;
    dig[0]= tempor % 10;

    Se que da el mismo resultado pero yo también me enredé un poco al tratar de modificarlo 🙂

    Siempre agradecido por la explicación del código.

    1. Gracias Luis, nuevamente por el aporte. Un saludo grande!!!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Multiplexar Display 7 Segmentos con Arduino
Cerrar menú