18:44:45 (リツイート)
23:46:54 はてなブログに投稿しました #はてなブログ OLED 続き - OBONO’s Diary URL
23:53:08 時々はてなブログに記事を書いているわけだが、6月の北海道の旅行とか、7月の鉄道博物館とか、そういう記事に書くべきな気がする…
OLED 続き
前回の続き。OLED に文字を出せることができたので、あとは「タクトスイッチを押したタイミングで画面に何かしら表示して、しばらくしたら画面を消す」を実現する。
画面表示方法を調べた時もそうだったけど、ネットで調べると大抵 python で書かれたサンプルコードが見つかるんだよね。これまで python を書いたことが無かったのだが、見よう見まねで頑張ってコードを書いてみた。(書いたコードは Gist にアップロード済み)
このコードでは、引数に任意のコマンド文字列を渡せるようにしてあり、タクトスイッチを押した際、そのコマンドの実行結果が画面に表示されるようになっている。そのため、別途、以下のようなシェルスクリプトを用意しておく。
#!/bin/bash date '+%F %T' uptime | sed -r 's/^.+up ([^,]+),.+$/UP \1/' uptime | sed -r 's/^.+\s(\S+),\s(\S+),\s(\S+)$/CPU \1 \2 \3/' df -h | grep /mnt/exhdd | awk '{print "HDD",$3,"/",$2,$5}' free -h | sed -n -e 2p | awk '{print "MEM",$3,"/",$2}'
あとは、こいつをサービスとして常駐させるべく、以下のような内容で /etc/systemd/system/monitor-status.service ファイルを作成し、
[Unit] Description=Status monitor daemon [Service] WorkingDirectory=/root/monitor-status ExecStart=/root/monitor-status/monitor.py ./script.sh Restart=always [Install] WantedBy=multi-user.target
systemctl コマンドを実行すれば完成。
# systemctl daemon-reload # systemctl enable monitor-status # systemctl start monitor-status
というわけで、普段は画面表示は消えているが、
タクトスイッチを押すと、現在時刻、稼働日数、CPU Load 値、HDD 使用量、メモリ使用量を画面に表示。
約 30 秒で自動的に画面表示が消える。よしよし、想定通りに動作しているぞ。
大した事をやったわけではないのだが、これはこれで妙な満足感を得られたのであった。めでたしめでたし。
参考記事
Tweet on 2019-07-04
23:32:11 任天堂、「ファイアーエムブレム 風花雪月」の紹介映像を公開! 本日よりあらかじめダウンロードも開始 - GAME Watch URL @game_watchさんから あー、今月発売なのか。イカン、ゲームが積み上がり始めそうな感じだ。
23:52:55 ソースコードはここに置いた。GPIO17にタクトスイッチを付ける前提。引数にコマンド文字列を渡して実行すると、スイッチを押すたびにコマンドが実行され、その結果が画面に出力される。 URL
OLED
昨年の秋に 128×64 OLED である SSD1306 を購入したわけだが、実はこの時2つ購入してたんだよね。
この OLED をラズパイ2に繋ぎたいとずっと思っていたのだが、昨年5月に作った時報の仕組みを維持しつつ、OLED を繋ぐ必要がある。そんな事情もあって、なかなか手を出せずにいたんだけど、意を決して回路を組みなおしてみた。
こんな感じ(この図は表面から見た図)でユニバーサル基板上に配線し、メロディ IC はピンヘッダを噛ませて直接はんだ付け。OLED はピンソケットを付けて着脱可能にし、タクトスイッチをピンソケットの上に糊付けする。スピーカーも着脱可能にしておいた。
とりあえず、画面に何かしらの文字列を表示させることはサクッとできたので、後は何を出力するか。それについてはまた後日。