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

仕様

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
20(GND)GNDGNDGND
19(MOSI)DINDOUTDIN
24(CE0)CSCSCS
24(CLK)CLKCLKCLK

RasPiのGPIO

3.3V125V
I2C_SDA345V
I2C_SCL56GND
GP0478TxD
GND910RxD
GP171112GP18
GP271314GND
GP221516GP23
3.3V1718GP24
SPI_MOSI1920GND
SPI_MISO2122GP25
SPI_CLK2324SPI_CE0
GND2526SPI_CE1
ID_SD2728ID_SC
GP052930GND
GP063132GP12
GP133334GND
GP193536GP16
GP263738GP20
GND3940GP21

ソースコード

$ 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