タイムコードみたいな表示をする時計

仕様

RasPi側の準備

NTP

そのままでもInternetにつながっていれば時刻同期している模様。
ntpdをインストールしても良い。

SPIを有効にする

sudo raspi-configでSPIを有効にする

MAX7219ドライバーのインストール

$ sudo apt-get install python3-dev python3-pip
$ sudo pip3 install max7219

$ git clone https://github.com/rm-hull/max7219.git
$ cd max7219
$ sudo pip3 install -e .

$ sudo python setup.py install

RaspPiにLEDモジュールを接続

GPIOLED1(IN)LED1(OUT)LED2(IN)
2(5V)VCCVCCVCC
6(GND)GNDGNDGND
19(MOSI)DINDOUTDIN
24(CE0)CSCSCS
24(CLK)CLKCLKCLK

ソースコード

$ cat date_time.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time
from datetime import datetime

from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.virtual import viewport, sevensegment


def clock(seg):
    interval = (1/60)*2-0.007          # 1/30カウンターと表示の更新周期
    frm = 0
    old_sec = ""

    while True:

        now = datetime.now()           # 現在の日時を取得

        # 秒の値が変わったら1/30カウンターのリセット
        if old_sec != now.strftime("%S"):
            frm = 0
            old_sec = now.strftime("%S")

        # DPをブリンクさせる
        if tik <= 2:
            seg_text = now.strftime("20%y.%m.%d%H%M%S")
        elif tik >= 3:
            seg_text = now.strftime("20%y.%m.%d%H.%M.%S.")

        # 1/30カウンターを2桁化
        if frm < 10:
            frm2 = "0" + str(frm)
        else:
            frm2 = str(frm)

        seg.text = seg_text + frm2    # 日時に1/30カウンターのテキストを結合
        frm = frm + 1                 # 1/30カウンターをインクリメント

        time.sleep(interval)


def main():
    serial = spi(port=0, device=0, gpio=noop())
    device = max7219(serial, cascaded=2)
    seg = sevensegment(device)

    clock(seg)


if __name__ == '__main__':
    main()

実行

$ sudo python3 date_time.py

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS