● 実験テーマ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へ →