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