6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

4桁の7セグをラズパイで動かす

Posted at

時計やセンサーの値をリアルタイムで表示させる勉強として、4桁の7セグを扱ってみました。
Pythonでダイナミック点灯させます。こんな感じ↓↓↓
IMG_0364.jpeg

1桁の7セグの記事はこちら

#動作環境
Raspberry Pi 4 Model B
Python3.7.3

#準備するもの

  • 4桁7セグメント (今回は、白色の A-574SR-LF B/W を使用)
  • 抵抗 (白色の場合は、330Ω)
  • ブレッドボード
  • ジャンパ線

#配線

A-574SR-LF B/W での7セグのピン番号とGPIOのポート番号は以下の通りです。

  • 桁数側
7セグ ピン番号 12 9 8 6
GPIO 11 13 15 16
  • 数字盤側

| 7セグ ピン番号 | 11(A) | 7(B) | 4(C) | 2(D) | 1(E) | 10(F) | 5(G) | 3(DP) |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| GPIO | 31 | 33 | 35 | 37 | 40 | 32 | 36 | 38 |

#プログラム
###好きな4桁の整数を表示させるプログラム

クリックすると開きます
7seg4_A.py
import RPi.GPIO as GPIO
from time import sleep

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
segmentpins = [31,33,35,37,40,32,36,38] #数字盤側
digitpins = [16,15,13,11] #桁数側
GPIO.setup(segmentpins, GPIO.OUT)
GPIO.setup(digitpins, GPIO.OUT)

numbers = [
    #a,b,c,d,e,f,g,p
    [1,1,1,1,1,1,0], #0
    [0,1,1,0,0,0,0], #1
    [1,1,0,1,1,0,1], #2
    [1,1,1,1,0,0,1], #3
    [0,1,1,0,0,1,1], #4
    [1,0,1,1,0,1,1], #5
    [1,0,1,1,1,1,1], #6
    [1,1,1,0,0,1,0], #7
    [1,1,1,1,1,1,1], #8
    [1,1,1,0,0,1,1], #9
    ]

def displayNumber(n):
    ns = numbers[n]
    for i,n in enumerate(ns):
        n = 1 if n == 0 else 0
        GPIO.output(segmentpins[i],n)

def displayNumbers(vs):
    for i in range(4):
        GPIO.output(digitpins[i], 1)
        displayNumber(vs % 10)
        digitalclear()
        GPIO.output(digitpins[i], 0)
        vs = vs // 10

def digitalclear():
    for i in range(8):
        GPIO.output(segmentpins[i], 1)

no = int(input(表示する値を入力してください))
while True:
    displayNumbers(no)

GPIO.cleanup()

###好きな4桁の小数を表示させるプログラム
!14.62など整数2桁、小数2桁の形で入力!

クリックすると開きます
7seg4_B.py
import RPi.GPIO as GPIO
from time import sleep

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
segmentpins = [31,33,35,37,40,32,36] #数字盤側
digitpins = [16,15,13,11] #桁数側
GPIO.setup(segmentpins, GPIO.OUT)
GPIO.setup(digitpins, GPIO.OUT)

numbers = [
    #a,b,c,d,e,f,g,p
    [1,1,1,1,1,1,0,0], #0
    [0,1,1,0,0,0,0,0], #1
    [1,1,0,1,1,0,1,0], #2
    [1,1,1,1,0,0,1,0], #3
    [0,1,1,0,0,1,1,0], #4
    [1,0,1,1,0,1,1,0], #5
    [1,0,1,1,1,1,1,0], #6
    [1,1,1,0,0,1,0,0], #7
    [1,1,1,1,1,1,1,0], #8
    [1,1,1,0,0,1,1,0], #9
    ]

def displayNumber(n,dot = False):
    ns = numbers[n]
    for i,n in enumerate(ns):
        n = 1 if n == 0 else 0
        GPIO.output(segmentpins[i],n)
    v = GPIO.LOW if dot else GPIO.HIGH
    GPIO.output(segmentpins[7], v)

def displayNumbers(no):
    no = int( no * 100 ) #小数を整数にして表示している
    for i in range(4):
        GPIO.output(digitpins[i], 1)
        dot = True if i==2 else False #小数点の位置は、i==の値を変える
        displayNumber(no % 10, dot)
        digitalclear()
        GPIO.output(digitpins[i], 0)
        no = no // 10

def digitalclear():
    for b in range(8):
        GPIO.output(segmentpins[b], 1)

no = int(input(表示する値を入力してください))
while True:
    displayNumbers(no)
    
GPIO.cleanup()

#参考サイト
4桁7セグメントLEDで始めるArduino

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?