● 実験テーマ105
「OLED_7セグ風表示の、温湿度・気圧計の実験」
(テーマ100で使った韓国製OLED+テーマ88で使った気象センサ:BME280で実験してみました。)
以下、この実験の顛末記です。
■ 2018.3.16
・前テーマ104での、カラー液晶表示器に、7セグ風パターンを表示する実験結果を踏まえ、何かに応用
したいと考えていたのだが、デモ表示でも取上げた、温湿度・気圧計(整数表示)にしたいと思う。
3つの情報を、3行だけ表示すれば良いので、QVGAでなく、テーマ100で使った、韓国製の、128x128
RGB_OLEDに表示させることにした。(ちょっと輝度が低いのが難点だが・・使えない訳ではない。)
・まずは、OLEDドライバ・ライブラリに、QVGAの時に追加した7セグ関数を、OLED用に書換え更新した。
バージョンを、_v2にしました。
これで、未だセンサは繋がないで、表示テストのみテストしてみました。
この7セグ関数は、ゼロブランクには対応していません。(ゼロサプレスになっている。)
なのでデモ表示は、表示桁数 = 数値桁数
と指定し表示させています。
ここらは本番では、ゼロブランクに対応させるべく改変しようと考えています。
以下にテスト表示の具合を示しました。
■ 2018.3.17
・OLEDへのデモ表示は大方OKなので、テーマ88の、QVGAを、このOLEDに置換え、3つの気象情報を7セグ整数表示してみる。
プロジェクト名:「PIC24F_BME280_TEST_2」として作業開始。
HEXまで準備出来る。
■ 2018.3.18
・まずは動かず。
BME280の初期化に失敗。
これはイージーミス:I2C初期化が抜けていただけ。
修正して一応表示OKになる。(但しゼロブランクは未だ考えてない。)
尚、今は、気圧:4桁表示・湿度:2桁表示・温度:2桁表示としている。
■ 2018.3.19
・BME280の測定範囲のMAX仕様は、
hPa→ 1100max
% → 100max
℃ → 85max
であるので、湿度は3桁表示にしないといけない。
今のままだとゼロサプレスになって表示がちょっと不自然。
■ 2018.3.25
・3月19日に、テーマ103の、P板が、FUSION PCBから届いたので、実装作業等で、5日間ほど空きました。
そこで作業再開です。
ゼロブランク対応に関数を改変しようと思い、最初の表示のみのテストプロジェクトに戻っての作業にしました。
・現状の関数で、表示桁数と数値桁数:が異なる場合の表示がどうなるか再確認してみました。
以下のように、表示桁数 > 数値桁数の場合は、ゼロサプレスになり、
表示桁数 < 数値桁数の場合は、原点(0.0)から表示した場合は最上位桁は、右に追いやられ下3桁が表示されます。
表示桁数 < 数値桁数を指定することは無いので、このケースは削除することにしました。
■ 2018.3.27
・ゼロブランク・テスト_1
桁毎に表示しているところで、表示桁数 > 数値桁数を、チェックして、各桁の頭が、'0'である場合、
ブランク表示にしてみたが、これだと、数値の途中にある'0'も、ブランクになってしまう。
・ゼロブランク・テスト_2
良い方法を思いついたので試したが結果NG
その方法は以下。
各桁毎の表示処理の中では、ゼロサプレスになっている。
簡単な方法として、一度、ゼロサプレスされた表示を、最後(最下位の前桁)に、表示桁数
- 数値桁数分だけ
ゼロブランクしてみた。
これを繰返さなければ、確かにゼロブランクするが、本番のプロジェクトに戻って繰り返すと、考えてみれば当然だが、
一度ゼロサプレス表示したのをゼロブランクしているため、繰り返し表示すると、薄くゼロブリンクしてしまう。
■ 2018.3.29
・簡単な方法は駄目だった。
7セグ表示関数には、表示色指定の、colと、非表示色(背景色)指定の、coloffの引数がある。
最下位桁は常に、'0'であっても表示するので、5〜2桁目の、表示色をそれぞれ、col_5,4,3,2として
あらかじめゼロブランクする桁を判断して、表示色を非表示色にするか、表示色にするか決めることにした。
cColum(表示桁数)
== digit(数値桁数)→ ブランクしない→ col_5,4,3,2=
col
cColum
> digitの時だけ、ブランク→ 条件によって必要な桁だけcol_5,4,3,2の内のどれかを、
coloffすることにした。
これで一見は本番プロジェクトで上手く行ったように見えたが・・・
■ 2018.3.30
・ゼロブランク処理に不具合あり修正(表示のみのテストプロジェクトに戻ってテスト)
@ ブランク桁のみ表示色を非表示色にしているだけで、表示すべき桁の表示色を指定してない為
表示色が不定になり、色が変わってしまう現象が発生。
A 数値が'0'の場合、digit=0で桁数チェックのループを抜ける為、digit=0になるが、この時のブランク条件が抜けていた。
これは、数値0〜9999までインクリメント表示させるデモで気が付いた。
・実際の気象表示でゼロブランクが発生する例を想定して、表示デモしてみた。
これでゼロブランク機能の改変は、OKのようだ。
・本番プロジェクトに、この改変ライブラリを適応し動作確認してみた。
良さそうである。 このページトップの写真を参照してください。
※ だいぶ時間が経ちましたが、ここから追試:「使える形にまとめた」の記事です。 記:2020.11.16
■ 2018.4.18
・バラックでの実験が終わった後に、これを車の中で使える「温湿度・気圧計」として、まとめてみました。
エネループ単3電池2本(1.2x2= 2.4V)の、電池駆動にしました。
OLED駆動用の16V電源が必要なので、まず、電池電圧:2.4Vを初段のDC/DC(SL-LMR62421
"ストリナ")で、
5Vに昇圧した後に、それをさらに次段のDC/DCで、16Vに昇圧することにしました。
このDC/DCには、ストリナの、SL-AS1332Aを使いました。
また、ロジック電源の、3.3Vですが、それは初段DC/DC出力の5Vを、3端子レギュレータで生成してます。
これでも電池の持ちは期待ほど良くありませんでした。
・次の、3つのユニット基板のスタック構成になっています。
@ OLEDユニット基板:キャリーボード:IFB-NVK-128SC008F
A PIC24F制御基板
B 電源基板
・車のセンターダッシュボード下の、小物入れ用のクボミの所に置いて使ってます。
夜間は、そんなに気にならないのですが、このOLED輝度が今一暗く、日中の周囲が明るい環境では、
表示が暗く、ちょっと見ずらいのが不満な点ですが、何とか使えています。
・ハード詳細については添付の回路図を参照してください。
尚、実験時のhex「PIC24F_BME280_TEST_2_hex」で、そのまま動きます。
<回路図>
・こちらから、どうぞ→ PIC24F_BME280実験_2
OLED_温湿度・気圧計 ※ 車の中で使える形にまとめた版 201116
更新
<最終ソース・ヘッダファイル>
・こちらから、どうぞ:
@ 7セグ風表示テスト・プロジェクト・メインソース
PIC24F_OLED_7SEG_DISP_TEST.c
A BME280気象センサ+OLED_温湿度・気圧計テスト・プロジェクト・メインソース
PIC24F_BME280_TEST_2.c
※ @、Aには以下の、ライブラリ+フォントデータ・ファイルが必要です。
但し、@には、I2Cライブラリは必要ありません。
/// OLEDライブラリ
LD50T5128M_OLEDlibPIC24F_v2.c
LD50T5128M_OLEDlibPIC24F_v2.h
/// I2Cライブラリ
skI2C_PIC24F_lib.c
skI2C_PIC24F_lib.h
/// アスキーフォント
ASCII12dot.h (12x12dot)
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ106へ →