OLED用にマイクロ秒(μs)の画像を作ってみました。

環境はこちらの別サイトに習い整えました。
Raspberry Pi: OLED-Display 128×64 mit Python ansteuern (I2C)

 

ひらがな変換した μ を使用すると文字化けするので、これまでは代わりに小文字の u を使用していました。しかしどうにも気になっていたので、画像の扱い方の勉強がてら作ったのが次の画像です。サイズは12×7ピクセルのグレースケール、PNG形式。GIMPで作成。↓

 

↓ 実際に使用したのがこれです。(μsは画像)

draw.bitmap((116, 4), Image.open('us.png'), fill=1)

 

↓ μ の代わりに小文字のユーの字 u を使用すると。(usは文字)

draw.text((116, 0), 'us', fill=1)

今度が本命のグラフ作りです。自作中のGPS時計に追加予定で、ntpdのオフセット値をグラフにします。

loopstats を元にグラフを描画するのですが、GPSユニットから1PPSが出力されないと、このログファイルは更新されないようです。なので、衛星をロストして外のNTPサーバーに同期している時は、グラフを描画出来ません。取り敢えず、こんな時は画面中央に「GPS LOST」と表示する事にしました。でもまぁ〜、同じディレクトリにある peerstats ならNTPサーバー同期中のオフセット値もあるんですけど。

ブレッドボード上でGPS時計が動作中のRadpberry Piで開発しています。使用OLED Displayは秋月電子で購入の0.96インチ128×64ドット有機ELディスプレイです。秋月通販コードP-12031

 

↓ 実際どんな物かと、タイムラプス動画にして見れるようにしました。この動画は150倍速です。実際のグラフ更新間隔は16秒なので、本当はアニメーションのように表示されません。

 

↓ グラフエリアは118×49ドット(黄色エリア)で、この中に点描画します。三角や四角に上下のラインは含みません。

 

ntpdのログファイル loopstats を最終行から118行を元にオフセット値を点描画します。グラフの更新間隔は16秒。ログファイルも私の環境では16秒間隔で記録されています。118行×16秒=1888秒なので、このグラフの横軸幅は31分28秒くらいです。最新の変化を確認するだけなら十分でしょう。

↑ 【5.0】は縦軸の倍率のようなもので、横軸に影響はありません。これはプロットが枠内に収まるように調整する時の数値で、5.0から0.1の範囲で変化します。
5.0 → 1ドット = 0.2μ秒
1.0 → 1ドット = 1μ秒
0.1 → 1ドット = 10μ秒

5.0を上限に設定、下限は0.1に設定。5.0の時が一番拡大された表示。0.1の場合は一番縮小されて表示されます。0.1でも収まらない場合は、断念して Out of rengeと画面中央に表示する仕掛けです。

↑ 【PPS】はGPSの1PPSに同期している印です。勝手に表示させているのでは無く、ntpq -crvのコマンドで得たものにsync_ppsの文字列がある場合に表示させています。

↑ 【0.772us】はオフセット値です。グラフ表示の為に /var/log/ntpstats/loopstats を読み込みます。その時、最終行(最新)のオフセット値を表示させています。同時に【三角マーク】はこの値を示します。

↑ 右端の【白四角】はグラフのゼロの位置を意味します。あの白四角より上ならプラス。下ならマイナスです。

今夢中のOLED-Displayに温度記号の°Cを表示させる時、違いがあったので備忘録。画像内の赤四角部分を見比べて下さい。

今までアスキー文字以外の、ひらがな変換した記号は文字化けしてしまうと思い込んでいたのですが、普通に表示されました。

↓ 最初の例は、私が見て形が良いものからです。° だけ全角で変換して C は半角アルファベットにしました。

 

↓ 次は、形が悪い(私の美意識では)と思うものです。°もCも同時に変換出来たものを使用すると、こうなりました。

 

ん〜。パッと見、違いが分からないですね。

今、私も「あれ。同じ?」と2秒ほど思ってしまいました。

でも、気を取り直して良く見ると、特に ° の丸さが違います。下段のものは丸みが無く四角になっています。それに、C の形も違うのです。実物を見ると分かりやすいのですが。