Raspberry (23): Usar un display de 4 dígitos de 7 segmentos.

En este capítulo vamos a ver como conectar un “Display” numérico con 4 dígitos de 7 segmentos. Esto nos permitirá mostrar 4 números del 0 al 9 para mostrar información de la Raspberry, como por ejemplo, un reloj, un contador, un cronómetro, etc.

Fichero “Pruebas.py”:

# Fichero “Pruebas.py”:

# Importamos la librerias necesarias
import RPi.GPIO as GPIO
import time

# Inicializaciones
GPIO.setmode(GPIO.BCM)

# Constantes globales para ENCENDER o APAGAR un segmento
SegEncender=True
SegApagar=False

# Constantes globales para ACTIVAR o DESACTIVAR un dígito
DigEncender=False
DigApagar=True

# GPIO para los segmentos del DISPLAY:
SegA=24
SegB=18
SegC=20
SegD=16
SegE=12
SegF=23
SegG=21
SegP=25
# GPIO para los DÍGITOS del DISPLAY:
Dig1=22
Dig2=27
Dig3=17
Dig4=5

# Asigno los SEGMENTOS a los GPIO para el DISPLAY:
GPIO.setup(SegA, GPIO.OUT) # Segmento A.
GPIO.setup(SegB, GPIO.OUT) # Segmento B.
GPIO.setup(SegC, GPIO.OUT) # Segmento C.
GPIO.setup(SegD, GPIO.OUT) # Segmento D.
GPIO.setup(SegE, GPIO.OUT) # Segmento E.
GPIO.setup(SegF, GPIO.OUT) # Segmento F.
GPIO.setup(SegG, GPIO.OUT) # Segmento G.
GPIO.setup(SegP, GPIO.OUT) # Segmento P.
# Asigno los DÍGITOS a los GPIO para el DISPLAY:
GPIO.setup(Dig1, GPIO.OUT) # Segmento A.
GPIO.setup(Dig2, GPIO.OUT) # Segmento B.
GPIO.setup(Dig3, GPIO.OUT) # Segmento C.
GPIO.setup(Dig4, GPIO.OUT) # Segmento D.

# Funciones del programa:
def Encender(): # ENCIENDE todos los SEGMENTOS.
   GPIO.output(SegA, SegEncender) # Segmento A.
   GPIO.output(SegB, SegEncender) # Segmento B.
   GPIO.output(SegC, SegEncender) # Segmento C.
   GPIO.output(SegD, SegEncender) # Segmento D.
   GPIO.output(SegE, SegEncender) # Segmento E.
   GPIO.output(SegF, SegEncender) # Segmento F.
   GPIO.output(SegG, SegEncender) # Segmento G.

def Apagar(): # APAGA todos los SEGMENTOS.
   GPIO.output(SegA, SegApagar) # Segmento A.
   GPIO.output(SegB, SegApagar) # Segmento B.
   GPIO.output(SegC, SegApagar) # Segmento C.
   GPIO.output(SegD, SegApagar) # Segmento D.
   GPIO.output(SegE, SegApagar) # Segmento E.
   GPIO.output(SegF, SegApagar) # Segmento F.
   GPIO.output(SegG, SegApagar) # Segmento G.

def Numero(dig,num): # Pone el DÍGITO y el NÚMERO que se le envía
   # Activo el DÍGITO correspondiente: ########################
   if dig == 1:
      print('Dígito 1')
      GPIO.output(Dig1, DigEncender) # Dígito 1
      GPIO.output(Dig2, DigApagar) # Dígito 2
      GPIO.output(Dig3, DigApagar) # Dígito 3
      GPIO.output(Dig4, DigApagar) # Dígito 4
   elif dig == 2:
      print('Dígito 2')
      GPIO.output(Dig1, DigApagar) # Dígito 1
      GPIO.output(Dig2, DigEncender) # Dígito 2
      GPIO.output(Dig3, DigApagar) # Dígito 3
      GPIO.output(Dig4, DigApagar) # Dígito 4
   elif dig == 3:
      print('Dígito 3')
      GPIO.output(Dig1, DigApagar) # Dígito 1
      GPIO.output(Dig2, DigApagar) # Dígito 2
      GPIO.output(Dig3, DigEncender) # Dígito 3
      GPIO.output(Dig4, DigApagar) # Dígito 4
   elif dig == 4:
      print('Dígito 4')
      GPIO.output(Dig1, DigApagar) # Dígito 1
      GPIO.output(Dig2, DigApagar) # Dígito 2
      GPIO.output(Dig3, DigApagar) # Dígito 3
      GPIO.output(Dig4, DigEncender) # Dígito 4
   else :
      print('ERROR en el dígito')
      GPIO.output(Dig1, DigApagar) # Dígito 1
      GPIO.output(Dig2, DigApagar) # Dígito 2
      GPIO.output(Dig3, DigApagar) # Dígito 3
      GPIO.output(Dig4, DigApagar) # Dígito 4
   # Pongo el NÚMERO. ####################################
   if num == 0:
      print('Pongo el 0')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegEncender) # Segmento E.
      GPIO.output(SegF, SegEncender) # Segmento F.
      GPIO.output(SegG, SegApagar) # Segmento G.
   elif num == 1:
      print('Pongo el 1')
      GPIO.output(SegA, SegApagar) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegApagar) # Segmento D.
      GPIO.output(SegE, SegApagar) # Segmento E.
      GPIO.output(SegF, SegApagar) # Segmento F.
      GPIO.output(SegG, SegApagar) # Segmento G.
   elif num == 2:
      print('Pongo el 2')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegApagar) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegEncender) # Segmento E.
      GPIO.output(SegF, SegApagar) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   elif num == 3:
      print('Pongo el 3')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegApagar) # Segmento E.
      GPIO.output(SegF, SegApagar) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   elif num == 4:
      print('Pongo el 4')
      GPIO.output(SegA, SegApagar) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegApagar) # Segmento D.
      GPIO.output(SegE, SegApagar) # Segmento E.
      GPIO.output(SegF, SegEncender) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   elif num == 5:
      print('Pongo el 5')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegApagar) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegApagar) # Segmento E.
      GPIO.output(SegF, SegEncender) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   elif num == 6:
      print('Pongo el 6')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegApagar) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegEncender) # Segmento E.
      GPIO.output(SegF, SegEncender) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   elif num == 7:
      print('Pongo el 7')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegApagar) # Segmento D.
      GPIO.output(SegE, SegApagar) # Segmento E.
      GPIO.output(SegF, SegApagar) # Segmento F.
      GPIO.output(SegG, SegApagar) # Segmento G.
   elif num == 8:
      print('Pongo el 8')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegEncender) # Segmento E.
      GPIO.output(SegF, SegEncender) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   elif num == 9:
      print('Pongo el 9')
      GPIO.output(SegA, SegEncender) # Segmento A.
      GPIO.output(SegB, SegEncender) # Segmento B.
      GPIO.output(SegC, SegEncender) # Segmento C.
      GPIO.output(SegD, SegEncender) # Segmento D.
      GPIO.output(SegE, SegApagar) # Segmento E.
      GPIO.output(SegF, SegEncender) # Segmento F.
      GPIO.output(SegG, SegEncender) # Segmento G.
   else: # Por si recibo otro valor
      print('Apago todo')
      Apagar()


####################################################
### Código principal de la página:
####################################################

# Bucle infinito con el programa:
try:
   while True:
      for dig in [1,2,3,4]:
         for num in [0,1,2,3,4,5,6,7,8,9]:
            Numero(dig,num)
            print('DÍGITO: {} NÚMERO: {}'.format(dig,num))
            time.sleep(1)

# Atrapa la pulsación de teclado: CTRL+C para acabar
except KeyboardInterrupt: 
   print('Apago todo para terminar')
   Apagar()
   GPIO.cleanup()

Fichero “contador.py”:

# Fichero “contador.py”:

         :
         :
         : El mismo contenido del ejemplo anterior,
         : hasta la función “Numero()” incluida.
         :
         :

def PonerNumero(num): # Descompone el número y lo envía al "display"
   num4 = num % 10
   num3 = (num // 10) % 10
   num2 = (num // 100) % 10
   num1 = (num // 1000) % 10
   TiempoFinal = time.time() + 1 # Pone el número durante 1 seg.
   while time.time() < TiempoFinal:
      Numero(1,num1)
      Apagar()
      Numero(2,num2)
      Apagar()
      Numero(3,num3)
      Apagar()
      Numero(4,num4)
      Apagar()

####################################################
### Código principal de la página:
####################################################

# Bucle infinito con el programa:
try:
   while True:
      for num in range(0,101):
         print('NÚMERO: {}'.format(num))
         PonerNumero(num)

# Atrapa la pulsación de teclado: CTRL+C para acabar
except KeyboardInterrupt: 
   print('Apago todo para terminar')
   Apagar()
   GPIO.cleanup()
Capítulo Anterior Capítulo Siguiente

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *