Arduinoで取得した温湿度を、見やすくデザイン性の高い画面にする
はじめに
このシリーズでは、Arduinoに7インチタッチディスプレイ(GT-SPシリーズ「GTWV070S3A00P」)を接続し、様々なプロジェクトを進める過程を解説しています。
前回は温湿度センサーモジュール DHT11 から温度と湿度を読み取り、ディスプレイに表示させるプロジェクトを作りました。今回は、文字色やバーなどを追加し装飾する流れを紹介していきます。
なお、この記事は前回の記事(「Arduinoに接続した温湿度センサ モジュールの値を表示する」)の続きになります。

GT Design Studioで装飾を行う
今回はセンサの数値を装飾するために、GT Design Studioで少しデザインの調整を行います。具体的には、GT-SPに背景や画像の設定、フォント登録やフォントの文字の大きさなどを変更します。
なお、今回は一定温度によって文字色が変わるようにもします。そちらはArduinoのプログラムで行います。
オブジェクトの配置
初めにオブジェクトを配置します。最終的に以下の画像になるように、テキストオブジェクトとバーオブジェクトを置きます。

オブジェクトの割り当ては以下のとおりです。
・オブジェクト0 … TEXT_0
・オブジェクト1 … TEXT_1
・オブジェクト2 … TEXT_2
・オブジェクト3 … TEXT_3
・オブジェクト4 … BAR_0
・オブジェクト5 … BAR_1
TEXT_1とTEXT_3のそれぞれのテキストには「0.0 dec C」と「0 %」とデフォルトの数値を仮で入れてあります。
背景画像を追加
ページの背景画像は、プロパティで登録を行います。


ページオブジェクト「PAGE_0」を選択した後、プロパティの「Image」グループにある「Image」のIMG列(空白の部分)をクリックすると画像登録用の画面が出現します。

IMAGE Select ウィンドウが開きますので、「Add」ボタンより画像の登録を行います。今回は下のような800×480サイズのPNGファイルを登録しました。

登録した画像を選択し、IMAGE Select ウィンドウ右下にある「Select」ボタンを押すとページの背景画像として表示されます。

ユーザーフォントの登録(ビットマップフォント)
今回、各種テキストオブジェクトはデフォルトフォントではなく、ユーザーフォントに、フリーのPCフォントを登録してみます。
はじめに、今回登録するフォントを準備します。今回は以下のサイトから「Melete」フォントをダウンロードします。
http://dotcolon.net/font/melete
次に、GT Design Studioの画面上部にある「Font」より登録画面を表示します。


続いて「User_0」を押して左上の「Edit」ボタンを押します。
次の画面にて、Convert Setting欄より ①Font にあるプルダウンから、登録する フォントの選択を行います。
次に下部に赤い逆三角の②「Convert」 ボタンを押すと、 フォントがコンバートされ、プレビューに表示されます。
ここで、「Height」「Size」「Margin Right」を変更して、希望する大きさになるまで調整します。
最後に右下にある③「Set Font Data」 ボタンでユーザーフォントの登録が行えます。

今回はUSER_0にPCフォント「Melete Light」をセットし、Heightに「80」、Sizeに「40」、「Margin Right」に「10」を入れました。またUSER_1にはPCフォント「Melete Medium」をセットし、Heightに「24」、Sizeに「16」、「Margin Right」に「5」をそれぞれ設定しました。

登録を終えたら右下にある「All Set」ボタンを押します。
ユーザーフォントの使用
登録したフォントは、テキストオブジェクトのプロパティより選択して使用できます。 下記はTEXT_1のプロパティ画面です。

プロパティの「Text0」>「Text 0 Size」のValueを選択し、「USER0」に設定しました。これで、先ほど登録したユーザーフォントのUSER_0があてがわれます。今回は、テキストオブジェクトが4つありますので、それぞれ以下のように選択しました。
TEXT_0 —– USER1 (Melete Medium)
TEXT_2 —– USER1 (Melete Medium)
TEXT_1 —– USER0 (Melete Light)
TEXT_3 —– USER0 (Melete Light)
色の変更
次に、テキストの色を変更します。

「Color」 >「 Text Color」にあるIMG列の四角(デフォルトでは黒色の四角になっている)をクリックして表れるCOLOR Selectウィンドウより設定可能です。

変更したい色を選択し、右下のSetを押すことで設定可能です。今回は、TEXT_1とTEXT_3のText Colorには「緑色(0x0000FF00)」を設定しています。背景色は「Back Color」で同様に設定します。
バーのデザイン調整
バーオブジェクトの色は、今回はデフォルトのままにします。ただし、デフォルトのバーの中に値が表示されてしまっているので、これを消します。

バーオブジェクトを選択し、プロパティの「Style」>「Text Format」の設定を「Blank」にします。すると、中の値が表示されなくなります。
デザインの確認

最終的に、上のようなプレビュー画面になりました。TEXT_1、TEXT_3、BAR_0とBAR_1それぞれのオブジェクトは、Arduinoから送信される値を表示するための受信側の役割を果たしますので、イベントアクションの設定は必要ありません。
タッチスクリーンに書き込むプロジェクトの作成
前回の記事に書かれたプログラムを参考にして、条件によってテキストオブジェクトの色が変わるようにします。またバーオブジェクトに対しても数値を送るようにします。条件として、温度が21度を越えたらテキストオブジェクトの色が赤色になるようにします。また、湿度が36%を下回ったら、テキストオブジェクトの色が赤色になるようにします。
以下が今回のプログラムです。
プログラム解説
前回のプログラムから、温度と湿度の値による文字色の変更と、バーオブジェクトに数値を送る箇所を追加しました。 「if (temperature >= 21.0) {」と「if (humidity < 36) {」で始まる箇所、と「int tempbar」「int humbar」のところです。
また、今回は「gtsp_ObjPrpSet_val」関数を追加してあります。例えば、「gtsp_ObjPrpSet_val(1, 0x50, 4, 0x00FF0000);」は、テキストオブジェクト1の、文字の色変更用プロパティNo.である「0x50」に「0x00FF0000」(FF0000、つまり赤色)にするように送っています。
「int tempbar = map(temperature, 0, 30, 0, 100);」については、Arduinoのmap関数を用いて、温度の0~30度を0~100の範囲にマッピングしています。これにより、バーの位置が決まります。
この例では、下は0度、上は30度までしか測れません。必要な測定範囲があれば0と30の値を調整してあげれば良いでしょう。
実行結果
前回の記事と表示される値は同じですが、今回は色の変更や文字の大きさの変更を行うことで、視認性が増しました。また、バーによってアクティブに数値の増減を確認できるようになりました。

