Utilizando Registro de Desplazamiento 74HC595 con Raspberry Pi

En el artículo anterior estuvimos hablando sobre este dispositivo y las ventajas que podríamos tener al usarlo. Pero puede ser un poco difícil de entender sin ver un ejemplo o sin entender su operación y modos de uso.
Hoy lo aplicaremos utilizando todos los pines que este dispositivo nos proporciona con un ejemplo simple usando una librería de código abierta accesible para todos, creada por Mecany y alojada en Github.

Requerimientos:

  • 1 Raspberry Pi
  • 1 Protoboard
  • 8 Leds
  • 8 Resistencias 220 Ω
  • 17 Conectores
  • 1 74HC595

Instalando librería requerida:

Podemos obtener una librería en github para manejar este registro de desplazamiento:
En el mismo directorio en el que tenemos el script de python, debemos hacer lo siguiente:

git clone git@github.com:marsminds/shiftr_74HC595.git

Procedimiento:

  • Antes de conectarle la energía al Raspberry Pi, necesitamos construir el circuito como se muestra en el diagrama.

  • Conectar la energía al Raspberry Pi
  • Guardar el código siguiente en un archivo llamado shift_register.py
import RPi.GPIO as GPIO
from shiftr_74HC595.shiftr_74HC595 import ShifRegister #importing the downloaded class
from time import sleep
GPIO.setmode(GPIO.BOARD)
data_pin = 7 #pin 14 on the 75HC595
latch_pin = 11 #pin 12 on the 75HC595
clock_pin = 12 #pin 11 on the 75HC595
shift_register = ShifRegister(data_pin, latch_pin, clock_pin) #using the class to manage the shift register
try:
    while 1:
        #setting the pins to turn on or off the leds
        shift_register.setOutput(0, GPIO.HIGH)
        shift_register.setOutput(1, GPIO.LOW)
        shift_register.setOutput(2, GPIO.LOW)
        shift_register.setOutput(3, GPIO.LOW)
        shift_register.setOutput(4, GPIO.HIGH)
        shift_register.setOutput(5, GPIO.LOW)
        shift_register.setOutput(6, GPIO.LOW)
        shift_register.setOutput(7, GPIO.HIGH)
        sleep(1)
        #setting the pins to turn on or off the leds
        shift_register.setOutput(0, GPIO.LOW)
        shift_register.setOutput(1, GPIO.HIGH)
        shift_register.setOutput(2, GPIO.HIGH)
        shift_register.setOutput(3, GPIO.HIGH)
        shift_register.setOutput(4, GPIO.LOW)
        shift_register.setOutput(5, GPIO.HIGH)
        shift_register.setOutput(6, GPIO.HIGH)
        shift_register.setOutput(7, GPIO.LOW)
        sleep(1)
except KeyboardInterrupt:
    print “Ctrl-C – quit”
GPIO.cleanup() #cleaning all the GPIO pins when the script is finished

 

  • Ejecutar el archivo guardado utilizando el siguiente comando en la consola:
sudo python shift_register.py