タイムコードみたいな表示をする時計
そのままでも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 |
| 20(GND) | GND | GND | GND |
| 19(MOSI) | DIN | DOUT | DIN |
| 24(CE0) | CS | CS | CS |
| 24(CLK) | CLK | CLK | CLK |
| 3.3V | 1 | 2 | 5V |
| I2C_SDA | 3 | 4 | 5V |
| I2C_SCL | 5 | 6 | GND |
| GP04 | 7 | 8 | TxD |
| GND | 9 | 10 | RxD |
| GP17 | 11 | 12 | GP18 |
| GP27 | 13 | 14 | GND |
| GP22 | 15 | 16 | GP23 |
| 3.3V | 17 | 18 | GP24 |
| SPI_MOSI | 19 | 20 | GND |
| SPI_MISO | 21 | 22 | GP25 |
| SPI_CLK | 23 | 24 | SPI_CE0 |
| GND | 25 | 26 | SPI_CE1 |
| ID_SD | 27 | 28 | ID_SC |
| GP05 | 29 | 30 | GND |
| GP06 | 31 | 32 | GP12 |
| GP13 | 33 | 34 | GND |
| GP19 | 35 | 36 | GP16 |
| GP26 | 37 | 38 | GP20 |
| GND | 39 | 40 | GP21 |
$ 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