5.1 マイクロチップ - 74HC595¶
集積回路(Integrated Circuit、IC)は、電子回路で"IC"として表されるミニチュア電子デバイスまたはコンポーネントの一種です。
特定のプロセスを用いて、トランジスタ、抵抗器、コンデンサ、インダクタなど、回路に必要なコンポーネントと配線を小型またはいくつかの小型の半導体ウェハーや誘電体基板上に作成し、それをパッケージに収めることで、必要な回路機能を持つマイクロ構造になります。全てのコンポーネントは一体となって構造化され、電子部品は微小化、低消費電力、高信頼性、および知能化に大きく前進しています。
集積回路の発明者は、ジャック・キルビー(ゲルマニウム(Ge)を基にした集積回路)とロバート・ノートン・ノイス(シリコン(Si)を基にした集積回路)です。
このキットには、GPIOピンの使用を大幅に節約できるIC、74HC595が装備されています。具体的には、8ビットの2進数を書き込むことで、デジタル信号出力のための8ピンを置き換えることができます。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
全体のキットを購入するのが確実に便利です。リンクはこちら:
名前 |
このキットに含まれるアイテム |
リンク |
---|---|---|
ケプラーキット |
450以上 |
以下のリンクから個別にも購入できます。
品番 |
コンポーネント |
数量 |
リンク |
---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
8(220Ω) |
||
6 |
8 |
||
7 |
1 |
回路図
MR(ピン10)がハイレベルで、OE(ピン13)がローレベルの場合、SHcpの立ち上がりエッジでデータが入力され、SHcpの立ち上がりエッジを通じてメモリレジスタに移動します。
2つのクロックが一緒に接続されている場合、シフトレジスタは常にメモリレジスタよりも1パルス早いです。
メモリレジスタには、シリアルシフト入力ピン(Ds)、シリアル出力ピン(Q)、および非同期リセットボタン(ローレベル)があります。
メモリレジスタは、3つの状態で並列8ビットのバスを出力します。
OEが有効化(ローレベル)された場合、メモリレジスタ内のデータがバス(Q0〜Q7)に出力されます。
配線
コード
注釈
kepler-kit-main/micropython
のパスの下にある5.1_microchip_74hc595.py
ファイルを開くか、このコードをThonnyにコピーしてから、「Run Current Script」をクリックするか、単純にF5を押して実行します。画面右下の角にある「MicroPython(Raspberry Pi Pico)」のインタープリターをクリックするのを忘れないでください。
詳細なチュートリアルについては、 コードを直接開いて実行する を参照してください。
import machine
import time
sdi = machine.Pin(0,machine.Pin.OUT)
rclk = machine.Pin(1,machine.Pin.OUT)
srclk = machine.Pin(2,machine.Pin.OUT)
def hc595_shift(dat):
rclk.low()
time.sleep_ms(5)
for bit in range(7, -1, -1):
srclk.low()
time.sleep_ms(5)
value = 1 & (dat >> bit)
sdi.value(value)
time.sleep_ms(5)
srclk.high()
time.sleep_ms(5)
time.sleep_ms(5)
rclk.high()
time.sleep_ms(5)
num = 0
for i in range(16):
if i < 8:
num = (num<<1) + 1
elif i>=8:
num = (num & 0b01111111)<<1
hc595_shift(num)
print("{:0>8b}".format(num))
time.sleep_ms(200)
プログラムが動作しているとき、 num
は8ビットの2進数として74HC595チップに書き込まれ、8つのLEDのオンオフを制御します。
シェルで num
の現在の値を確認できます。
仕組み
hc595_shift()
は、74HC595に8つのデジタル信号を出力させます。それは2進数の最後のビットをQ0に、最初のビットをQ7に出力します。言い換えれば、2進数「00000001」を書き込むと、Q0はハイレベルを出力し、Q1〜Q7はローレベルを出力します。