¡Controla un Display de 7 Segmentos con Arduino! Un Proyecto Educativo y Divertido
¡Hola, entusiasta de la electrónica! Hoy te traigo un proyecto emocionante que te ayudará a aprender a controlar un display de 7 segmentos con Arduino. Usaremos un Arduino Uno para mostrar números del 0 al 9 en un display de 7 segmentos utilizando una conexión multiplexada. Este proyecto es ideal para quienes desean aprender sobre la visualización de números en pantallas y la manipulación de hardware básico. ¡Vamos a comenzar! 😄
Control de Display de 7 Segmentos con Arduino: Aprende a mostrar números del 0 al 9 utilizando un display de 7 segmentos y Arduino.
Enlace al Proyecto en Tinkercad - Display de 7 Segmentos
Explora cómo funciona este proyecto y experimenta con el circuito interactivo en Tinkercad. Haz clic en el siguiente enlace para acceder: Display de 7 Segmentos - Proyecto en Tinkercad. Recuerda ajustar la conexión a CÁTODO en el contador de Tinkercad para que funcione correctamente.
Componentes Necesarios
Para realizar este proyecto, necesitarás los siguientes componentes:
- 1 x Arduino Uno R3
- 1 x Display de 7 Segmentos de 1 dígito (cátodo común)
- 7 x Resistencias de 220 Ω
- Cables y protoboard
Todos los materiales necesarios los encontrarás en los siguientes enlaces:
- Kit de Arduino Uno R3 - Incluye Arduino y más
- Kit de módulos de sensores y componentes - Compatible con Arduino
Configuración del Circuito
Diagrama de Conexión
Conexiones:
- Display de 7 Segmentos:
- Conecta los pines del display de 7 segmentos a los pines digitales del Arduino según el esquema siguiente: A - 2, B - 3, C - 4, D - 5, E - 6, F - 7, G - 8.
- Conecta cada segmento a través de una resistencia de 220 Ω para limitar la corriente y proteger los LEDs.
- Conecta el cátodo común del display a GND.
Código para Controlar el Display de 7 Segmentos con Arduino
¡Hora de ensuciarnos las manos con un poco de código! Copia y pega este código en tu Arduino IDE, y prepárate para ver los números aparecer en el display de 7 segmentos:
// Declaración de los pines de los segmentos del display
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 6;
int segF = 7;
int segG = 8;
void setup() {
// Configuración de los pines como salidas
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
}
void loop() {
// Iteramos sobre los números del 0 al 9
for (int i = 0; i < 10; i++) {
displayNumber(i); // Mostramos el número actual
delay(1000); // Espera de 1 segundo entre números
}
}
void displayNumber(int number) {
// Encendemos/apagamos segmentos según el número a mostrar
switch (number) {
case 0: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, LOW); break;
case 1: digitalWrite(segA, LOW); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); break;
case 2: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, LOW); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, LOW); digitalWrite(segG, HIGH); break;
case 3: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, HIGH); break;
case 4: digitalWrite(segA, LOW); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
case 5: digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
case 6: digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
case 7: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); break;
case 8: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
case 9: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
}
}
Explicación del Código
A continuación, explicamos cada línea del código para ayudarte a comprender su funcionamiento y a desarrollar un pensamiento crítico sobre su estructura y lógica:
- int segA = 2; ... int segG = 8;: Estas líneas declaran las variables para cada uno de los segmentos del display de 7 segmentos, asignándoles los pines de Arduino que los controlarán.
- void setup() { ... }: La función
setup()configura los pines de los segmentos como salidas digitales utilizando la funciónpinMode(). Esto es necesario para controlar cada segmento individualmente. - void loop() { ... }: La función
loop()se ejecuta repetidamente en un bucle infinito. Utilizamos un bucleforpara iterar del 0 al 9 y mostrar cada número en el display de 7 segmentos. Después de mostrar cada número, el programa espera un segundo antes de pasar al siguiente número. - void displayNumber(int number) { ... }: Esta función utiliza una declaración
switchpara establecer el estado de los segmentos del display según el número que se desee mostrar. Para cada número, los segmentos correspondientes se encienden (HIGH) o apagan (LOW) utilizando la funcióndigitalWrite().
Problemas Comunes y Soluciones
- El display no muestra números correctamente: Verifica que las conexiones de cada segmento al Arduino sean correctas y que el cátodo común esté conectado a GND.
- Los segmentos del display están demasiado tenues: Asegúrate de que las resistencias utilizadas sean de 220 Ω. Resistencias de mayor valor pueden causar que los LEDs no se enciendan con suficiente brillo.
- El número mostrado no cambia: Verifica que el bucle
foren elloop()esté funcionando correctamente y que el retardo (delay) sea el adecuado.
Desafío para el Usuario
¿Cómo podrías modificar el proyecto para mostrar números más grandes (como el 10) o para contar hacia atrás? ¡Déjanos tu idea en los comentarios!
Puedes modificar el código para incluir un segundo display de 7 segmentos. Conecta otro display y utiliza otro conjunto de pines digitales para controlarlo. Aquí tienes un ejemplo de cómo hacer esto:
// Añade estas líneas al código existente
int segA2 = 9; // Segundo display, segmento A
// ... Define los pines para los otros segmentos del segundo display
void setup() {
// Configuración de pines para ambos displays
pinMode(segA2, OUTPUT);
// Configura el resto de los pines para el segundo display
}
void displayNumber2(int number) {
// Similar a displayNumber(), pero controla el segundo display
}
¡Espero que disfrutes creando este proyecto tanto como yo disfruto compartiéndolo contigo! Recuerda que la práctica hace al maestro, así que sigue experimentando y adaptando este código a nuevas ideas. ¡Nos encantaría ver tus creaciones! 🚀
Si te ha gustado este artículo, por favor compártelo y suscríbete a nuestro blog para más proyectos interesantes. ¡Hasta la próxima aventura tecnológica!












