ナルシーNote

2020年12月からC#、2021年2月からPythonを51歳で始めました。学んだことを備忘録として残してます。そろそろN88BASICは卒業しようかな😱

<Python>Raspberry Pi でシフトレジスタ74HC595を使う

Raspberry Pi でシフトレジスタ74HC595を使うサンプルです。

 

回路図はこんな感じです。

f:id:Cars_Narcy:20210403134709p:plain

回路図

 こちらのライブラリーを使わせていただきました。

github.com

こんなに便利な情報がいつでも手に入るなんてありがたいです。

素人でも使えました。

本当にありがとうございます。

 

まずはインストールします。

pip3 install git+https://github.com/marsminds/shiftr_74HC595.git

 

プログラムはこんな感じ。

リストpatternsの中身を順番に出力します。

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from shiftr_74HC595.shiftr_74HC595 import ShiftRegister
from time import sleep

#数字を8bitバイナリーリストにする
def list_bin(byte, degit):
    _high = 1 #GPIO.HIGH
    _low = 0  #GPIO.LOW
    bits=[]
    for i in range(degit):
        set_bit = _high if byte & (1 << i) else _low
        bits.append(set_bit)
    return bits

if __name__ == '__main__':

    # GPIO.setmode(GPIO.BOARD)
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)

    shift_register = ShiftRegister(data_pin=21, latch_pin=20, clock_pin=19)

    patterns = [1,2,4,8,0x10,0x20,0x40,0x80,0x00,0x55,0xaa,0x55,0xaa,0x00]
    try:
        while True:
            for i in patterns:
                print (format(i, '02x'), end = "=")
                print (i)
                shift_register.setOutputs(list_bin(i,8))
                shift_register.latch()
                sleep(0.5)
    except KeyboardInterrupt:
        shift_register.setOutputs(list_bin(0,8))
        shift_register.latch()
        print ("Ctrl-C - quit")
        GPIO.cleanup()
    

実行するとLEDが点滅します。

抵抗内臓LEDを使用すると配線がすっきりします。 

 

f:id:Cars_Narcy:20210403135728j:plain

(左側に写っている基板は関係ありません)

 

ご使用に関しては自己責任でよろしくお願い申し上げます。


2021年2月にpaizaラーニングでPythonを受講しました。
コメントでアドバイスをいただけると幸いです。

 

ほしい物リスト

ナルシーのほしい物リストはこちら