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.
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):
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.
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í:
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
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.
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í:
Con el siguiente resultado:
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.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.