En el mundo de la electrónica y la programación, el display de siete segmentos es una herramienta muy útil y versátil. En este artículo, te explicaremos cómo funciona este componente y cómo puedes conectarlo a tu placa Arduino para crear proyectos innovadores y visualmente atractivos. ¡Sigue leyendo para descubrir todos los detalles!
¿Cuántas veces has visto una película clásica en la que el héroe tiene que desactivar un…? ? El héroe observa la pantalla mientras pasa el tiempo, cada segundo más valioso que el anterior. Bueno, si miras de cerca, notarás todo esto. en las películas tienen pantallas de siete segmentos. ¡Debe serlo! ¿De qué otra manera podría un héroe saber cuánto tiempo le queda?
Es posible que las pantallas de siete segmentos no le resulten atractivas visualmente, pero son la forma más eficaz de mostrar números. Son fáciles de usar, económicos y muy visibles tanto en condiciones de poca como de mucha luz.
Un ejemplo real de una pantalla de siete segmentos es El famoso reloj de cuenta atrás de la NASA en Cabo Cañaveral, Florida, que se utilizó para el aterrizaje del Apolo.
La pantalla de 7 segmentos
La pantalla de 7 segmentos, también llamada “pantalla de siete segmentos”, consta de siete LED dispuestos en forma de ocho. Cada LED se llama segmento porque forma parte de un número cuando está encendido. A veces se utiliza un octavo LED para indicar un punto decimal.
Cada segmento de LED tiene uno de sus pines de conexión que sale directamente de la carcasa de plástico rectangular. Estos pines están marcados con las letras “a” a “g”. Los pines LED restantes están conectados a un único pin común.
Cada segmento se puede encender o apagar individualmente configurando el pin correspondiente en ALTO o BAJO, como un LED normal. Al iluminar segmentos individuales, puedes crear caracteres numéricos arbitrarios e incluso algunas representaciones básicas de letras.
Asignación de pines del display de 7 segmentos
Ahora veamos la configuración del segmento para que sepa qué pin corresponde a qué segmento. La asignación de pines del display de 7 segmentos es la siguiente.
a, b, c, d, e, f, g y DP están conectados a los pines digitales de un Arduino para operar los segmentos individuales de la pantalla. Al iluminar segmentos individuales, puede crear caracteres numéricos arbitrarios.
COM Los pines 3 y 8 están conectados internamente a un pin común. Dependiendo del tipo de pantalla, este pin debe conectarse a GND (cátodo común) o a 5 V (ánodo común).
Cátodo común (CC) frente a ánodo común (CA)
Hay dos tipos de pantallas de siete segmentos: cátodo común (CC) y ánodo común (CA).
La estructura interna de ambos tipos es casi idéntica. La diferencia es la polaridad de los LED y la conexión común. Como sugiere el nombre, las pantallas catódicas tradicionales tienen todos los cátodos (o terminales negativos) de los LED de segmento conectados entre sí, mientras que las pantallas de ánodo tradicionales tienen todos los ánodos (o terminales positivos) de los LED de segmento conectados entre sí.
En una pantalla de cátodo común, el pin comp está conectado a GND y se aplica un voltaje positivo a cada segmento (ag) para iluminarlo.
En una pantalla de ánodo común, el pin comp está conectado a VCC y cada segmento (ag) está conectado a tierra individualmente para iluminarlo.
Las pantallas de ánodo común de 7 segmentos generalmente se usan más comúnmente porque los circuitos disipadores de corriente ofrecen muchas ventajas sobre los circuitos fuente de corriente.
La pantalla de 7 segmentos funciona.
Dependiendo del carácter que quieras mostrar, necesitarás encender los LED del segmento correspondiente. Por ejemplo, para mostrar el número 4, deben iluminarse cuatro segmentos de LED b, c, f y g. Asimismo, se pueden mostrar varios dígitos del 0 al 9 y caracteres de la A a la F en una pantalla de 7 segmentos, como se muestra a continuación.
La siguiente tabla de verdad muestra qué segmentos deben iluminarse para producir dígitos y caracteres. Tenga en cuenta que la tabla de verdad para la pantalla de ánodo común de 7 segmentos es exactamente la opuesta a la de la pantalla de cátodo común de 7 segmentos.
Seleccionar una resistencia limitadora de corriente
Si bien una pantalla de 7 segmentos puede parecer una sola pantalla, en realidad está compuesta por siete LED independientes alojados en una sola carcasa, cada uno de los cuales requiere su propia resistencia limitadora de corriente para evitar daños a los segmentos de LED.
Normalmente, en una pantalla roja estándar de 7 segmentos, cada segmento de LED requiere aproximadamente 15 mA para iluminarse correctamente; Por lo tanto, el valor de la resistencia limitadora de corriente en un circuito lógico digital de 5 voltios sería de aproximadamente 200 Ω (5 V – 2 V)/15 mA. 220Ω al siguiente valor preferido más alto.
Con 220 Ω, el brillo de la pantalla se reduce ligeramente. Está bien, porque estas pantallas son bastante brillantes, por lo que normalmente se ven mejor si les quitas un poco de potencia. Sin embargo, si desea utilizarlos en el exterior, deberá utilizar uno 150Ω Resistencia para máximo brillo.
Si está utilizando una pantalla de 7 segmentos en un color diferente y no está seguro de cuánta energía requiere cada segmento LED, 330Ω es un valor seguro.
La siguiente figura muestra cómo conectar resistencias limitadoras de corriente a los segmentos LED de la pantalla.
Cableado de una pantalla de 7 segmentos a un Arduino
Ahora que entendemos cómo funciona la pantalla de 7 segmentos, ¡podemos conectarla al Arduino!
Comience montando la pantalla de 7 segmentos en su placa, asegurándose de que cada lado de la pantalla esté en un lado diferente de la placa. Cuando el punto decimal está hacia abajo, los pines en la parte inferior son del 1 al 5 de izquierda a derecha y en la parte superior son del 10 al 6 de izquierda a derecha.
Conecte uno de los pines COM al pin 5V del Arduino (si usa una pantalla de ánodo común de 7 segmentos) o al pin GND del Arduino (si usa una pantalla de cátodo común de 7 segmentos).
Los cuatro pines de la parte superior (b, a, f y g) están conectados a los pines digitales 2 a 5 del Arduino, mientras que los cuatro pines restantes de la parte inferior (e, d, c y DP) están conectados a los pines de Arduino. Son los pines digitales 6 a 9.
Aunque la pantalla puede funcionar sin resistencias limitadoras de corriente, siempre es una buena idea tenerlas en su circuito para proteger la pantalla de daños causados por sobrecorriente. Por lo tanto, también necesitará ocho resistencias limitadoras de corriente de 220 Ω para cada segmento.
La siguiente tabla enumera las conexiones de pines:
Pantalla de 7 segmentos | arduino | Observaciones | |
A | 3 | más de 220Ω | |
b | 2 | más de 220Ω | |
C | octavo | más de 220Ω | |
D | 7 | más de 220Ω | |
mi | 6 | más de 220Ω | |
F | 4 | más de 220Ω | |
GRAMO | 5 | más de 220Ω | |
PD | 9 | más de 220Ω | |
COM | 5V | Sólo para visualización de ánodo común | |
COM | Tierra | Solo para pantalla de cátodo común |
La siguiente imagen muestra cómo está todo conectado.
La biblioteca SevSeg
Hay muchas bibliotecas disponibles para visualización de 7 segmentos, pero una de las más populares es SevSeg. Esta biblioteca existe desde hace mucho tiempo. Es fácil de usar para principiantes, pero ofrece mucho para usuarios avanzados. Usaremos esta biblioteca en nuestros ejemplos.
Para instalar la biblioteca, navegue hasta Bosquejo > Incluir biblioteca > Administrar bibliotecas… Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.
Filtra tu búsqueda escribiendo “sevseg'. buscar SevSeg Biblioteca de Decano de lectura. Haga clic en esta entrada y luego seleccione «Instalar».
código de ejemplo de arduino
Ahora es el momento de hacer que la pantalla se ilumine con algún código.
El siguiente boceto de prueba cuenta de 0 a 9. Pruebe el boceto y lo analizaremos con más detalle.
#include "SevSeg.h"
SevSeg sevseg;
void setup()
{
//Set to 1 for single digit display
byte numDigits = 1;
//defines common pins while using multi-digit display. Left empty as we have a single digit display
byte digitPins[] = {};
//Defines arduino pin connections in order: A, B, C, D, E, F, G, DP
byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
bool resistorsOnSegments = true;
//Initialize sevseg object. Uncomment second line if you use common cathode 7 segment
sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
//sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop()
{
//Display numbers one by one with 2 seconds delay
for(int i = 0; i < 10; i++)
{
sevseg.setNumber(i);
sevseg.refreshDisplay();
delay(2000);
}
}
Explicación del código:
Al comienzo del boceto, incluimos la biblioteca SevSeg y creamos una SevSeg
Objeto que utilizaremos a lo largo del boceto.
// Include library
#include "SevSeg.h"
// Create object
SevSeg sevseg;
El siguiente paso es configurar el número de dígitos en la pantalla. Dado que estamos usando una pantalla de un solo dígito, estamos configurando numDigits
a 1. Si está utilizando una pantalla de cuatro dígitos, establezca este valor en 4.
// Number of digits in display
byte numDigits = 1;
El digitPins
La matriz simplemente indica los «pines comunes». Si tiene una pantalla de un solo dígito, déjela en blanco. De lo contrario, enumere los números de pin de Arduino a los que están conectados los «pines comunes» de los dígitos individuales, de izquierda a derecha.
// Specifies the 'common pins' while using multi-digit display.
// If you have a single digit display, leave it blank.
byte digitPins[] = {};
la matriz segmentPins
entonces se define. Esta es una disposición de los pines de E/S conectados a los segmentos de LED en el orden A, B, C, D, E, F, G, DP.
// Display segment pins A,B,C,D,E,F,G,DP
byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
Una variable booleana, resistorsOnSegments
También se define para informar a la biblioteca si estamos utilizando resistencias limitadoras de corriente.
// Dropping resistors used
bool resistorsOnSegments = true;
El hardwareConfig
La variable indica el tipo de display de 7 segmentos que estamos utilizando. Los valores válidos son COMMON ANODE
Y COMMON CATHODE
. La nuestra es una pantalla de ánodo común.
// Display type
byte hardwareConfig = COMMON_ANODE;
En la configuración, inicializamos el objeto de visualización con los argumentos que acabamos de definir. También configuramos el brillo de la pantalla; Cualquier valor entre 0 y 150 funciona.
void setup() {
// Start display object
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
// Set brightness
sevseg.setBrightness(90);
}
En el bucle, eso for
El bucle se utiliza para contar del 0 al 9. En cada iteración se ejecuta la función. setNumber()
Y refreshDisplay()
se utilizan para mostrar un dígito en la pantalla.
Entonces hay un retraso de un segundo antes. i
se incrementa y se muestra el siguiente número.
for(int i = 0; i < 10; i++)
{
sevseg.setNumber(i);
sevseg.refreshDisplay();
delay(1000);
}
Proyecto Arduino – Rodillo de dados electrónico
Creemos un proyecto que lance los dados automáticamente para juegos de dados divertidos como Yahtzee y Ludo. Así es como se ve el resultado.
¿Decepcionado? ¡Vamos a empezar!
alambrado
Usaremos la misma configuración de Arduino que en el ejemplo anterior, pero esta vez agregaremos un interruptor táctil para rodar.
código arduino
#include "SevSeg.h"
SevSeg sevseg;
const int buttonPin = 10; // the number of the pushbutton pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
bool resistorsOnSegments = true;
sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop()
{
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
sevseg.setNumber(random(1,7));
sevseg.refreshDisplay();
}
}
Explicación del código:
Este boceto es similar al anterior, salvo algunas diferencias.
Para empezar, declaramos el pin Arduino al que está conectado el botón. También una nueva variable. buttonState
está definido para rastrear el estado del pulsador.
// the number of the pushbutton pin
const int buttonPin = 10;
// variable for reading the pushbutton status
int buttonState = 0;
Configuramos esto en el setup. buttonPin
como entrada.
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
En el bucle, generamos un número aleatorio usando la función incorporada cada vez que se detecta una pulsación de tecla. aleatorio (mínimo, máximo), que toma dos parámetros: el primero especifica el límite inferior del valor aleatorio (incluido este número), mientras que el segundo especifica el límite superior (excluyendo este número). Esto significa que se genera un número aleatorio entre min
Y max-1
.
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
sevseg.setNumber(random(1,7));
sevseg.refreshDisplay();
}
}
Cómo funciona el display de siete segmentos y cómo conectarlo a Arduino
Seguramente has visto muchas veces en películas clásicas cómo el héroe debe desactivar una bomba. El héroe observa el display mientras el tiempo pasa, cada segundo más valioso que el anterior. Bueno, si te fijas de cerca, notarás que todos los displays en las películas tienen displays de siete segmentos. ¡Debe ser así! ¿Cómo más podría un héroe saber cuánto tiempo le queda?
Quizás no encuentres que los displays de siete segmentos sean visualmente atractivos, pero son la forma más eficiente de mostrar números. Son simples de usar, económicos y altamente visibles tanto en condiciones de poca como de mucha luz.
El Display de 7 Segmentos
El display de 7 segmentos, también escrito como «display de siete segmentos», consta de siete LEDs dispuestos en un patrón en forma de ‘8’. Cada LED se llama segmento, porque al iluminarse, forma parte de un dígito. A veces se usa un octavo LED para indicar un punto decimal.
Cada segmento LED tiene uno de sus pines de conexión sacado directamente del paquete plástico rectangular. Estos pines están etiquetados con las letras ‘a’ a ‘g’. Los pines restantes de los LEDs se conectan entre sí para formar un único pin común.
Cada segmento se puede encender o apagar individualmente estableciendo el pin correspondiente a ALTO o BAJO, al igual que un LED regular. Al iluminar segmentos individuales, se puede crear cualquier carácter numérico e incluso algunas representaciones básicas de letras.
Configuración de Pines del Display de 7 Segmentos
Veamos la configuración de segmentos para que sepas qué pin corresponde a cada segmento. La configuración de pines del display de 7 segmentos es la siguiente.
- a, b, c, d, e, f, g y DP están conectados a los pines digitales en un Arduino para operar los segmentos individuales del display. Al encender segmentos individuales, se puede crear cualquier carácter numérico.
- Los pines 3 y 8 están conectados internamente para formar un pin común.
- Dependiendo del tipo de display, este pin debe conectarse a GND (ánodo común) o a 5V (cátodo común).
Continúa leyendo en el siguiente enlace: Electronics Lab