7セグメントLED表示テスト(Python)

2017.5.12


Rspberry Piで7セグメントLEDを表示するテストを行いました。
7セグメントLEDの各セグメントには、次のようにA〜G,DPの記号が付けられています。
各セグメントを点灯または、消灯することにより、0〜9の数字を表現します。
例えば、1なら、BとCを点灯し、他は消灯します。

点灯を1、消灯を0とし、各数字に対応するパターンをデータ化すると次のようになります。
各セグメントは、330Ωの電流制限抵抗を介してRaspberry PiのGPIOに接続します。
1つのセグメントに流れる電流は約4mAで全て点灯した場合の電流は、28mAです。

GPIOは、20〜26を使い、各GPIOの出力データは、上記データの右から順に各ビットが対応します。
従って、右に1ビットずつシフトしながら、LSB(最下位ビット)を順に各GPIOに送り出せば良いことになります。
スクリプトは、次のようになります。

 seg_data = [63,6,91,79,102,109,125,39,127,111]
というリストを作っておいて

def print_7seg(n):
  disp_data = seg_data[n]
  for i in range(20,27):
    GPIO.output(i,disp_data & 1)
    disp_data >>= 1

今回は、秋月電子で販売していC-533SRというカソードコモンの3桁の7セグメントLEDを使ってテストを行いました。
各桁を表示するために、PIO4,5,6の出力は、ドライブ用のトランジスタ2SC1815GRを使ってLEDのカソードに接続します。
各桁は、0.005s(5ms)ずつ1から3の順に順番に点灯させます。(ダイナミック点灯)
Raspbery Piと7セグメントLEDの接続は、下の回路図のように行いました。

ブレッドボードに回路を組んで、ジャンパー線で接続した様子です。
ほとんどちらつきもなく、3桁の数字を表示しています。

参考までにスクリプトは、こちら(テキストファイルです)

温度計などに応用できそうです。
4桁に増やせば、時計もできますね。

inserted by FC2 system