タイムコードみたいな表示をする時計
そのままでも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 opening(seg): seg.text = " v1.00TC CLOCK" def clock(seg): """ Display current time on device. """ interval = (1/60)*2-0.007 frm = 0 old_sec = "" while True: now = datetime.now() if old_sec != now.strftime("%S"): frm = 0 old_sec = now.strftime("%S") if frm <= 2: seg_text1 = now.strftime("20%y.%m.%d") seg_text2 = now.strftime("%H%M%S") elif frm >= 3: seg_text1 = now.strftime("20%y.%m.%d") seg_text2 = now.strftime("%H.%M.%S.") if frm < 10: frm2 = "0" + str(frm) else: frm2 = str(frm) seg_text2 = seg_text2 + frm2 # LED output seg.text = seg_text2 + seg_text1 frm = frm + 1 time.sleep(interval) def main(): # create seven segment device serial = spi(port=0, device=0, gpio=noop()) device = max7219(serial, cascaded=2) seg = sevensegment(device) opening(seg) time.sleep(3) clock(seg) if __name__ == '__main__': main()
システムクロックを取得してLEDに表示させている。
1/30秒でループを回してカウンターを回し、1/30秒の桁を作っている。
1/30秒の桁のリセットは、システムクロックの秒の値が変わった時に行っている。
ループの速度はRasPiの種類で少し変わる。
デジマルポイントを点滅させている。(00.00〜00.03が消灯)
7セグライブラリは、カスケードすると後ろのモジュールから表示されるみたい。
$ sudo python3 date_time.py
$ pip3 list | grep spidev spidev 3.5
$ sudo pip3 install spidev==3.4 --force-reinstall $ pip3 list | grep spidev spidev 3.4