2021-03-04
Conexión de un display de 7 segmentos
El display de 7 segmentos es un dispositivo electrónico que se utiliza para representar visualmente números y algunos caracteres. Este display es muy popular debido a su gran efectividad y simplicidad al momento de utilizarlo.
Cómo funciona
Un display se compone de 7 leds que tienen forma rectangular, colocados de tal manera que se asemejan un "8". Estos displays generalmente suelen traer un diodo adicional que forma un pequeño circulo para representar el punto decimal
Basta con encender los diodos de tal manera que nos permite visualizar el número que deseamos:
Para facilitar la tarea a cada segmento se le asigna una letra desde la 'A' hasta la 'G', y al punto se le llama 'DP' (decimal point); tal como se ve en la imagen anterior.
Como el número de pins es elevado, generalmente se suele reducir usando una configuración en cátodo común o ánodo común. En la configuración de cátodo común todos los cátodos de los diodos led están unidos, por el contrario, en ánodo común se unen todos los leds por el ánodo.
Hay que recordar que en un diodo, vulgarmente hablando, el ánodo es el positivo, y el cátodo es el negativo. Para una correcta polarización y que el diodo se encienda hemos de poner tensión positiva en el ánodo y en el cátodo GND. También es necesaria una resistencia limitadora para reducir la corriente que circula por el diodo.
Conexión de un display a Arduino
La conexión es realmente fácil. Basta con conectar cada pin del display a un pin del Arduino mediante una resistencia. Es importante no olvidar la resistencia ya que podemos dañar el Arduino ya que no es capaz de suministrar la corriente necesaria para todos los leds.
El pin común debemos conectar a GND si usamos un display de cátodo común, o a VCC si es de ánodo común. Hemos de tener en cuenta que en cátodo común debemos poner los pins de Arduino en HIGH para que el led se encienda. Sin embargo para ánodo común debemos ponerlo a LOW.
Para que Arduino encienda los leds podemos hacer dos cosas: una crear una función para cada digito, en la que usaremos digitalWrite para encender cada pin; o usar arrays de manera más elegante.
Para ello almacenaremos en un byte los diodos que deben encenderse, poniendo cada bit a uno o cero según si ha de estar encendido o no. Para cada digito almacenaremos el byte que le corresponde.
/* * EJEMPLO DE ENCENDIDO DE UN DISPLAY. */ // En un array guardamos los pines que se corresponden con los segmentos // desde A hasta G. const int pins[7] = { 7, 6, 5, 4, 3, 2, 1 }; // En un array guardamos un byte con cada digito. Cada bit de dicho byte // representa el estado de cada segmento. const byte segmentos[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x47, 0x7f, 0x67 }; int d=1; // Muestra un digito en el display. Nótese que no se tiene en cuenta que // el digito sea mayor de 9, con lo que el display puede mostrar caracteres // extraños. void digito(byte x) { for (int i=0; i<7; i++) digitalWrite(pins[i], bitRead(segmentos[x], i)); } void setup() { // Recorremoss el array de pins, haciendo que cada uno de ellos sea de // salida. for (int i=0; i<7; i++) { pinMode(pins[i], OUTPUT); } } void loop() { // Mostramos un digito por segundo. digito(d); delay(1000); d++; if ( d>9 ) d=0; }
Para realizar el proceso de conversión leds a byte podemos hacer una tabla a mano o usar este programa:
7 Segmentos