タイムコードみたいな表示をする時計
そのままでもInternetにつながっていれば時刻同期している模様。
ntpdをインストールしても良い。
sudo raspi-configでSPIを有効にする
$ 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
| GPIO | LED1(IN) | LED1(OUT) | LED2(IN) |
| 2(5V) | VCC | VCC | VCC |
| 6(GND) | GND | GND | GND |
| 19(MOSI) | DIN | DOUT | DIN |
| 24(CE0) | CS | CS | CS |
| 24(CLK) | CLK | CLK | CLK |
$ 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