7セグメントLEDで配線地獄

Raspberry Pi Published at March 23, 2025, 11:19 a.m. by admin@senrigan.org

LEDたったの2個でこんなに配線するもんなのか…

import RPi.GPIO as GPIO
from time import sleep

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

segments = [
    [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 countup(no):
    l = int(no / 10)
    r = int(no % 10)

    def display_digit(ports, digit):
        ns = segments[digit]
        for i, n in enumerate(ns):
            n = 1 if n == 0 else 0
            GPIO.output(ports[i], n)

    display_digit(lports, l)
    display_digit(rports, r)

try:
    for i in range(0, 100):
        print(i)
        countup(i)
        sleep(1)

except KeyboardInterrupt:
    pass
finally:
    GPIO.cleanup()

参考: やさしくはじめるラズベリー・パイ 改訂2版