LoginSignup
1
1

More than 1 year has passed since last update.

7セグで、任意の値を表示させてみた

Last updated at Posted at 2021-03-27

タイトルの通り、好きな数字を入力したら、7セグに出力されるものを作ります。

使用したもの

  • Raspberry Pi 4 Model B
  • ブレッドボード
  • ジャンパ線
  • 赤色7セグ(A-551SRD)

1. 配線する

下の画像のように、ジャンパ線を使いつなげていきます。
7seg.gif
7セグの足とGPIOのポート間は以下の通りです。

  • 十の位
7セグの足 1 2 3 4 5 6 7 8 9 10
GPIO 22 18 電源線 16 省略 7 11 電源線 13 15
  • 一の位
7セグの足 1 2 3 4 5 6 7 8 9 10
GPIO 32 36 電源線 38 省略 37 35 電源線 33 31

2. プログラム

SSHの場合は、sudo nano でファイルを作成します。
言語はpythonを使いました。

7seg_anyvalue.py

import RPi.GPIO as GPIO
from time import sleep

i = int(input('表示する値を入力してください:'))

GPIO.setmode(GPIO.BOARD)
ports1 = [
    11, 7,16,18,22,13,15,12]
ports2 = [
    35,37,38,36,32,33,31,40]
GPIO.setup(ports1, GPIO.OUT)
GPIO.setup(ports2, GPIO.OUT)

numbers = [
    [1,1,1,1,1,1,0,0], #0
    [0,1,1,0,0,0,0,0],
    [1,1,0,1,1,0,1,0],
    [1,1,1,1,0,0,1,0],
    [0,1,1,0,0,1,1,0],
    [1,0,1,1,0,1,1,0],
    [1,0,1,1,1,1,1,0],
    [1,1,1,0,0,1,0,0],
    [1,1,1,1,1,1,1,0],
    [1,1,1,0,0,1,1,0],
    [0,0,0,0,0,0,0,0], #10
    ]


def show_num(no):
    l = int(no / 10)
    r = int(no % 10)
    ns = numbers[r]
    for i, n in enumerate(ns):
        n = 1 if n == 0 else 0
        GPIO.output(ports2[i], n)
    ns = numbers[l]
    for i, n in enumerate(ns):
        n = 1 if n == 0 else 0
        GPIO.output(ports1[i], n)
try:
    while True:
        show_num(i)
        sleep(10)
        print('表示なう')


except KeyboardInterrupt:
       pass

GPIO.cleanup()

実行すると、表示させたい値を聞かれるので入力、7セグに反映されます。
その後は、10秒毎に「表示なう」がPC側に出ます。
終了したい場合は、「control」+「C」で終わります。

応用

7セグの数を増やして、計算機が作れそうだと思いました。
また、タクトスイッチを押すと、ランダムに値が出るなども、おもしろそうです。
7セグの世界も深いですね。

参考図書

クジラ飛行机 著
「やさしくはじめるラズベリー・パイ 電子工作でガジェット&簡易ロボットを作ってみよう」
ーマイナビ出版

※ 本記事では上記の図書を参考に、改良して使わさせていただきました。

1
1
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
1
1