2023年4月30日日曜日

ニキシー管時計のアッパーライト制御プログラム

ニキシー管を下から照らすアッパーライトの制御プログラムを書きました。microSDに書き込んだ設定ファイルを読み込んで点灯させます。

以下はデモ用に虹色で点灯させてみた様子です。iPhone 6sのカメラがイマイチで十分表現できていませんが肉眼だともう少し虹色に見えます。


前回はリング状のWS2812B(NeoPixel)で点灯試験しましたが、今回は作った基板にLEDを載せています。ピンヘッダは秋月の丸ピンソケットに挿せるもの(少々高い)。左端が丸ピンソケットです。これをユニバーサル基板に実装し、ニキシー管基板は差し替えられるようにする構造。

6桁分作りました。ニキシー管はメインの基板ができてから最後に実装しようと思います。


ブレッドボードに挿して点灯させた様子。当初電源に0.1uFのセラコンを付けなかったら、WS2812BがRGBの2色以上表示させると暴走して消える現象が発生し、白やオレンジなどが点灯できなかった。2色以上で電源ノイズが大きくなる模様。1色なら大丈夫だった。セラコンは基板に実装できるようにしておくべきでした。ちなみにリング状のNeoPixelには基板に付いていた。右奥にmicroSDソケットが見えます。秋月の基板を使いました。



以下のような設定ファイルをmicroSDに格納してあり、時間ごとに各桁の色を指定できます。12:00~15:00は6桁とも紫色(V)、15:00を過ぎるとデフォルトの虹色(トップの写真)で表示する例です。ちょっと凝りすぎな仕様かも知れない。
# setting for uplight LEDs
# color:  R:Red, G:Green, B:Blue, W:White, O:Orange, V:Violet, Y:Yellow
COLOR  BRIGHTNESS  30
COLOR  WIFI        RGBRGB # LED scan color while WiFi connecting
COLOR  DEFAULT     ROYGBV # Rainbow color
COLOR  06:00-08:00 YYYYYY
COLOR  08:00-12:00 GGGGGG
COLOR  12:00-15:00 VVVVVV
COLOR  18:00-20:00 OOOOOO
COLOR  20:00-00:00 WWWWWW


設定ファイルには、この他にも以下のようなものを記載できる。まだ全機能は実装できてない。

#-----------------------------------------------------------------------
# setup file for NIXIE tube clock
#-----------------------------------------------------------------------
# If IP address is dynamically assigned, following definition are not required.
IP_ADDR      192,168,0,79
GATEWAY      192,168,0,1
SUBNET_MASK  255,255,255,0
DNS_SERVER1  8,8,8,8      # Google DNS primery server
DNS_SERVER2  8,8,4,4      # Google DNS secondary server

# WiFi access point
WIFI_SSID     your_wifi_access_point
WIFI_PASSWORD your_wifi_password

# NTP server
NTP_SERVER1   ntp.nict.jp
NTP_SERVER2   time.google.com
NTP_SERVER2   ntp.jst.mfeed.ad.jp

# setting for clock
NTP_ACCESS    00:00       # Daily access time to ntp server 
SLEEP         22:00-06:00 # Nixie tube and LED off time
REFRESH       15          # Refresh period (min) for anti cathode poisoning. 15, 20, 30, 60
DISP_MODE     24H         # 12H or 24H

最近仕事ではpythonが多く、pythonだとこのようなテキスト処理は簡単なのですがarduinoだと意外と面倒でした。正規表現 <Regexp.h> の動作に苦戦した。面倒でエラー処理を省略してあるので、間違えた記述があるとおかしな動作をする。

0 件のコメント:

コメントを投稿