もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

ラズパイ 7セグメントディスプレイを光らせてみた

はじめに

こんにちは。

この記事は Kojirock1一人 Advent Calendar 2019の7日目の記事です。

adventar.org

今回も、事前に買った初心者キットに入っていたものを使いながら色々遊んでみます。

今回は7セグメントディスプレイというやつを使ってみます。

こちらは、ぐぐると参考になる日本語記事が見つかったので、今回はこちらのサイトをを参考にさせてもらいながら、やってみます。

www.fabshop.jp

やってみた

早速つなげてみました。

f:id:kojirooooocks:20191123025906j:plain

f:id:kojirooooocks:20191123025924j:plain

f:id:kojirooooocks:20191123025942j:plain

コードは参考サイトのものを拝借しました。

import RPi.GPIO as GPIO
import time

pins = [11,12,13,15,16,18,22,7]
dats = [0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80]

def setup():
    GPIO.setmode(GPIO.BOARD)
    for pin in pins:
        GPIO.setup(pin, GPIO.OUT)
        GPIO.output(pin, GPIO.LOW)  

def writeOneByte(val):
    GPIO.output(11, val & (0x01 << 0))
    GPIO.output(12, val & (0x01 << 1))
    GPIO.output(13, val & (0x01 << 2))
    GPIO.output(15, val & (0x01 << 3))
    GPIO.output(16, val & (0x01 << 4))
    GPIO.output(18, val & (0x01 << 5))
    GPIO.output(22, val & (0x01 << 6))
    GPIO.output(7,  val & (0x01 << 7))

def loop():
    while True:
        for dat in dats:
            writeOneByte(dat)
            time.sleep(0.5)

def destroy():
    for pin in pins:
        GPIO.output(pin, GPIO.LOW)
    GPIO.cleanup()

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt:
        destroy()

実際に動かしてみました!

www.youtube.com

0〜Fまでの16進数でカウントアップされてまた0からカウントアップされています。

正常に動きました!!

終わりに

今回は参考サイトがあったので助かりましたw

結構コードも、なんというか頑張るコードを書かないと行けない感じで、だんだんつらみが出てきました。

現場からは以上です。