Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

ラズパイ Python 7セグメントLED表示テスト

$
0
0
 連休が終わり、季節は青葉若葉の季節になりました。

 外に出ることが、多くなりましたが、合間にラズベリーパイとPythonの勉強をしています。

 PIC Arduinoなどで表示器として定番の7セグメントLEDをラズパイで使うテストをしました。

 7セグメントLEDには、アノードコモンとカソードコモンがありますが、今回は、カソードコモンを使います。

 7セグメントLEDの各セグメントには、それぞれA~G(a~g)の記号が付けられています。小数点は、DP(ドットポイント)です。

イメージ 1

 0~9の数字を各セグメントを点灯して表現します。例えば、1は、BとCを点灯し、他のセグメントを消灯します。

 点灯を1、消灯を0として、各セグメントの1,0(2進表現)を10進の数字で表現すると次のようになります。

イメージ 2

  A~Gの各セグメントは、330オームの電流制限抵抗を介して、GPIO20~GPIO26に接続します。

 予備実験で、3Vを330Ωを通して7セグメントLEDの1つのセグメントを点灯させた場合の電流を測定したら、約4mAでした。(7セグメントLEDは、秋月電子で販売しているC-522SR 7セグメント×3)

 ラズパイのGPIOは、1つ当たり最大16mAの電流を流すことができ、全GPIO合計で50mAまでです。

 今回は、最大で、4×7=28mAですので、問題ありません。

 さて、表示の方法です。

 0~9までの、セグメントのデータ7seg_dataをリストにします。
7seg_data=[63,6,91,79,102,109,125,39,127,111]

 数字の値に応じて、リストからデータを読み取ります。

 そのデータをLSB(最下位ビット)から順にGPIO20~GPIO26にセットします。

 これは、右へ1ビットシフトと1とのANDで行います。

 今回は、1秒ごとに0から9までの数字を表示するスクリプトを組みました。

"""
7segment LED test
2017.5.9
JH7UBC Keiji Hata
"""
# -*- cording : utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(20,GPIO.OUT)
GPIO.setup(21,GPIO.OUT)
GPIO.setup(22,GPIO.OUT)
GPIO.setup(23,GPIO.OUT)
GPIO.setup(24,GPIO.OUT)
GPIO.setup(25,GPIO.OUT)
GPIO.setup(26,GPIO.OUT)
GPIO.setup(27,GPIO.OUT)
seg_data = [63,6,91,79,102,109,125,39,127,111]
disp_data = 0

def print_7seg(n):
    disp_data = seg_data[n]
    for i in range(8):
        GPIO.output(20+i,disp_data & 1)
        disp_data >>= 1
try:
    while True:
        for j in range(10):
            print_7seg(j)
            sleep(1)
       
except KeyboardInterrupt:
    pass
GPIO.cleanup()

ブレッドボードで、テストをしました。
イメージ 3

 輝度も十分で、問題なく表示されました。

 次は、ダイナミック点灯で、3桁を表示してみます。

 

Viewing all articles
Browse latest Browse all 440

Trending Articles