タイムコードみたいな表示をする時計
そのままでも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