RasPi_NTP_TC
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
タイムコードみたいな表示をする時計
* 仕様 [#b71a2902]
- RaspberryPi OS Stretch
- Python3
- SPI 7セグ 8桁 LEDモジュール(MAX7219使用)を2個カスケード~
https://amzn.to/3gw7GpT
- NTP同期
- 1/30秒のケタをそれっぽく表示(正確ではなくフェイクです)
* RasPi側の準備 [#b0aa73f9]
** NTP [#ua324fd6]
そのままでもInternetにつながっていれば時刻同期している模...
ntpdをインストールしても良い。
** SPIを有効にする [#w7bbecee]
sudo raspi-configでSPIを有効にする
** MAX7219ドライバーのインストール [#v86ead9f]
$ 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
* RaspPiにLEDモジュールを接続 [#ma0d10c3]
** 接続順 [#f288d855]
|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|
** RasPiのGPIO [#s657f2a5]
|3.3V |1 |&color(black,yellow){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 |&color(black,yellow){19}; |&color(black,...
|SPI_MISO |21 |22 |GP25 |
|SPI_CLK |&color(black,yellow){23}; |&color(black,...
|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 |
* ソースコード [#d064ba1e]
$ 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セグライブラリは、カスケードすると後ろのモジュールから表...
* 実行 [#k14c78fb]
$ sudo python3 date_time.py
* Pi4またはBusterでエラーが出る場合 [#ma5c08ce]
- spidevのバージョンが3.5にアップされているとエラーになる~
$ pip3 list | grep spidev
spidev 3.5
- 3.4に落とす~
$ sudo pip3 install spidev==3.4 --force-reinstall
$ pip3 list | grep spidev
spidev 3.4
* メモ書き [#y3368384]
- RasPi3B+でテスト&調整
-- CLI/GUIでの負荷の差は無い
-- 更新周期1/60は厳しい
- PiZeroでは1/30桁の表示が間に合わない~
シングルコアではCLIでもPythonはきついみたい
終了行:
タイムコードみたいな表示をする時計
* 仕様 [#b71a2902]
- RaspberryPi OS Stretch
- Python3
- SPI 7セグ 8桁 LEDモジュール(MAX7219使用)を2個カスケード~
https://amzn.to/3gw7GpT
- NTP同期
- 1/30秒のケタをそれっぽく表示(正確ではなくフェイクです)
* RasPi側の準備 [#b0aa73f9]
** NTP [#ua324fd6]
そのままでもInternetにつながっていれば時刻同期している模...
ntpdをインストールしても良い。
** SPIを有効にする [#w7bbecee]
sudo raspi-configでSPIを有効にする
** MAX7219ドライバーのインストール [#v86ead9f]
$ 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
* RaspPiにLEDモジュールを接続 [#ma0d10c3]
** 接続順 [#f288d855]
|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|
** RasPiのGPIO [#s657f2a5]
|3.3V |1 |&color(black,yellow){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 |&color(black,yellow){19}; |&color(black,...
|SPI_MISO |21 |22 |GP25 |
|SPI_CLK |&color(black,yellow){23}; |&color(black,...
|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 |
* ソースコード [#d064ba1e]
$ 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セグライブラリは、カスケードすると後ろのモジュールから表...
* 実行 [#k14c78fb]
$ sudo python3 date_time.py
* Pi4またはBusterでエラーが出る場合 [#ma5c08ce]
- spidevのバージョンが3.5にアップされているとエラーになる~
$ pip3 list | grep spidev
spidev 3.5
- 3.4に落とす~
$ sudo pip3 install spidev==3.4 --force-reinstall
$ pip3 list | grep spidev
spidev 3.4
* メモ書き [#y3368384]
- RasPi3B+でテスト&調整
-- CLI/GUIでの負荷の差は無い
-- 更新周期1/60は厳しい
- PiZeroでは1/30桁の表示が間に合わない~
シングルコアではCLIでもPythonはきついみたい
ページ名: