Raspberry Pi 4

Display 7 segmentos con Raspberry Pi y GPIO

A través de este tutorial veremos cómo trabajar con el display de siete segmentos para dibujar un número, usando la Raspberry Pi y comandos gpio, sin ningún otro lenguaje.

Más adelante veremos cómo usar un lenguaje de programación, pero me gusta comenzar con las bases.

Display de 7 segmentos: ánodo y cátodo

Es importante recordar que hay 2 tipos de displays, unos son de ánodo común y otros son de cátodo común.

Si es de ánodo común, entonces debes escribir un 0 sobre la entrada que quieres encender. Y en caso de que sea de cátodo común debes escribir un 1 sobre la entrada.

Además, para ánodo común debes conectar el común a 5 volts, y para cátodo común debes conectar el común a tierra.

Para guiarme siempre me ha servido la siguiente imagen (que no es mía):

Puertos GPIO

Me voy a referir a cada puerto por su número GPIO, y no por su número consecutivo.  En la siguiente imagen puedes ver que el GPIO 25 es el puerto número 22; pues en los comandos me referiré al GPIO, en este caso sería el 25.

El circuito

Vamos a conectar un GPIO a cada letra del display. La relación queda así:

G=12
F=14
A=15
B=18
C=23
D=17
E=27

Mis displays son de cátodo común así que el común va conectado a GND. Si, en tu caso, son de ánodo común, entonces el común iría al 5 v.

No olvides que debes usar una resistencia  (de 220 o 47 ohm) por cada letra del display. Al final el circuito queda así:

Display 7 Segmentos Con Raspberry

¿Cómo encender cada letra del display?

Para encender y apagar vamos a usar comandos gpio, por ejemplo, para encender la letra A que está conectada al pin GPIO 15 primero lo ponemos en modo out:

gpio -g mode 15 out

Más tarde, le escribimos un 1 (esto en caso de que tu display sea de cátodo común) o un 0 si es de ánodo común, así:

gpio -g write 15 1

De nuevo lo digo, yo le escribo un 1 porque mi display es de cátodo común.

Así hay que hacer por cada letra que hay. Pero también podemos crear un script

Script para simplificar cosas

Podemos usar bash como lenguaje para trabajar con los display de 7 segmentos y la Raspberry Pi. En mi caso he escrito este script:

#    Programado por Luis Cabrera Benito
#  ____          _____               _ _           _
# |  _ \        |  __ \             (_) |         | |
# | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___
# |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
# | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
# |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
#         __/ |                               __/ |
#        |___/                               |___/
#
#
#    Blog:       https://parzibyte.me/blog
#    Ayuda:      https://parzibyte.me/blog/contrataciones-ayuda/
#    Contacto:   https://parzibyte.me/blog/contacto/
G=12
F=14
A=15
B=18
C=23
D=17
E=27
for NUMERO in $A $B $C $D $E $F $G; do
    echo "Colocando modo out a $NUMERO ... OK :)"
    gpio -g mode $NUMERO out
    gpio -g write $NUMERO 0
done

# Un ejemplo para dibujar el número 6, que sería:
# 1011111

for NUMERO in $A $C $D $E $F $G; do
    gpio -g write $NUMERO 1
done

echo "Terminado"

Comenzamos definiendo las letras y su respectivo valor en el GPIO. En el primer ciclo establecemos que ese número de pin será de salida, apagamos a todas (esto para “reiniciar”)

Después podemos encender solo algunas de ellas. En el ejemplo puedes ver cómo se dibuja el número 6 estableciendo en 1 el valor de A,C,D,E,F,G.

En el caso de B no se enciende porque para que el 6 se dibuje, el B debe estar apagado, y se apaga en el primer ciclo del código.

Nota: recuerda que yo uso un 1 porque es de cátodo común.

Display 7 segmentos con Raspberry

Si ejecutas el script que mencioné, o escribes cada comando por separado, se dibujará el número en el display. Yo ejecuté el script con bash leds.sh así:

Script bash para encender display de 7 segmentos con Raspberry y GPIO

Con el siguiente resultado:

Probando display 7 segmentos con GPIO y Raspberry Pi

Así puedes hacer cualquier número; comienza definiendo cuáles debes encender y apagar para dibujarlo. Además, también puedes dibujar letras o cualquier cosa que se te ocurra y sea posible para el display.

Ahora que menciono esto, recuerdo que hice un tutorial de leds con Arduino.

Te invito a leer más sobre Raspberry Pi en mi blog.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.