気圧、温度、湿度の3つの表示を分離表示させるには?その2


このままでは、16ビットの幅で分解能を上げると、変化はよく見える様になる反面、表示できる範囲が狭くなってしまって、ついには画面から飛び出てしまい、結果的に見えなくなってしまいます。

かといって、表示の範囲を広げると、必要な分解能が得られずに、変化の無い単調な横一文字のグラフになってしまいます。

そこで、考えたのが「自動シフト表示機能」です。
1.表示範囲は縦16ドットで、分解能は、縦1hPa/dotとする。

2.電源投入直後の初期設定で、1013hPaを中心に、最大1021hPa、最小1006hPaとします。(これで、縦16ビット幅で、分解能が1hPa/dotになります)

3.気圧の48カ所分の記憶データー領域を用意して、電源投入時に整数の「2000」を、その全てにあらかじめ書き込んでおき、何もグラフ表示していない状態の印にしておきます。再描画が必要になった時に、この2000以上のデータが有った場合は、その位置のプロットをしない様にします。

4.気圧のデータが先ほどの範囲内に収まっている場合は、このままの条件で気圧値をプロットしながら、横方向のドット毎に気圧データーを、最大で48カ所分記憶していきます。

5.もしも、取得した気圧値が、範囲内に無い場合は、上限を超えていれば上限値をその時取得した値に変更して下限値を「上限値-15」の値に設定します。あるいは、下限を下回っていれば下限値をその時取得した値に変更して上限値を「下限値+15」の値に設定します。こうする事によって、常に、表示範囲を縦16ドット幅、分解能を縦1hPa/dotを保ちます。この、新たな設定範囲を使って、過去の表示データをプロットし直します。この再描画の際には、自動シフト変更は適応しません。

プロットの間隔設定によりますが、48回分の気圧プロット範囲内で16hPaの変化が無ければ、完全な全体表示が常に出来る仕掛けです。もしも、過去の48回(正確には、過去の45回分)の気圧プロット内で16hPa以上の変化が発生した値が有れば、プロット時に上方、または、下方にクランプされて表示されます。

下記に、1013hPaを中心に、1029hPaから997hPaの範囲を48dotで1サイクルするSin波を約1秒毎に描かせたテスト表示を行った動画を用意しました。avi形式で、8.6MBあります。zip形式で圧縮しても6.8MBありました。(なお、通常はこんなに激しく気圧が変動する事はありません。)

MOV01783.zip

これって、分かりますかねー?んー、ちょうど16dot分上下のスリットを上下に移動させながら眺めている様な感じですかね・・いかがでしょうか?


PIC 16F886、PIC 18LF2550 のハードウエア共通版のプロジェクトファイルを下記リンクから、それぞれPICに合わせてダウンロードして下さい。気圧自動シフト表示機能有り版です。

回路図は「湿度センサーを18LF2550で使うには? その1」のものと変わり有りません。
16886prrh22.zip (プロット時のバグを修正、マイナス温度の表示に対応)(Sep. the 12th 2010)

※ご注意 本プロジェクトは HI-TECH C for the PIC10/12/16 v9.81 以前のバージョンにて作成されています。 HI-TECH C for the PIC10/12/16 v9.81 以降のバージョンでそのままコンパイルすると、コンパイルエラーが発生いたします。これを解消するには、下記をご参照下さい。

HI-TECH C for the PIC10/12/16 v9.81リリースとその注意点!
http://ohta.no-ip.com/Pages/templan/index60.html
(Mar. the 1st 2011)
182550prrh22.zip (プロット時のバグを修正、マイナス温度の表示に対応)(Sep. the 12th 2010)
どちらも、PIC自身の相違点である特定のパラメーターや、内部のシステムクロック周波数等 device.c の一部分を除く全てのファイルが共通です。

動作電流は16F886で4mA以下、18LF2550で10mA以下で正常に動作している事を確認いたしました。

なお、このソースプログラムは、
Windows XP Pro v2002 SP3上で、
現時点において最新で無償の、
MPLAB-IDE v8.53、
HI-TECH C Compiler for PIC10/12/16 MCUs version 9.71a Lite mode 及び、
HI-TECH C Pro for the PIC18 MCU Family Compiler Version 9.63PL3 Lite mode
によりそれぞれコンパイルされています。

(注意)これ以前のバージョンでコンパイルを行うと、スタックオーバーフローのワーニングが出たりしますので、上記バージョンにてコンパイルして下さい。

気圧センサー部分を含むプログラムの大部分を、パレットソフトさんのプログラムを利用し、私が変更に、変更を加えて使用しています。

ノキア5110表示用のライブラリー部分は、
CQ出版の「トランジスタ技術2006年3月号」に掲載された、
R8C/15付録マイコン基板活用企画 
第9回 小型グラフィック液晶表示器で作る簡易温度計 山本 秀樹氏 のR8C/15用ソフトウエアをHI-TECH C Compiler用に移植して使用しています。

湿度センサーSHT-11とのインターフェース部分は、今回はエレキジャックさんのソースを利用しております。

I/Oは非オープンドレイン対応でPICの双方向I/O通信を行い、関連ポートグループのデジタルI/O操作は、ファイル device.c 上で一元管理されたポートバッファ方式関数で全て行っています。(Aug. the 27th 2010)

注意事項
General disclaimer
トッ プページへ

なお、当ホームページで公開しているデーター(写真、音声)等を個人の枠を超えて複製・転用する事はご遠慮下さいませ。
ご意見/苦情/ご感想はこちらまで