TFTグラフ:ライブ履歴グラフ
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
概要
データをTFTLCDに専門的にグラフ化したいと思ったことはありませんか?しかし、問題があります。すべての計算が含まれるため、グラフを作成するのは特に困難です。
このプロジェクトは、そのストレスをすべて解消し、独自の履歴グラフを作成して、必要なものをわずか数秒でグラフ化できるようにすることを目的としています。 5つの変数を編集するだけです。
ビデオ
画像
<図>
機能性
このプロジェクトは、誰にとっても簡単で楽しいグラフ作成を目的としています。すべての難しい計算が完了し、ユーザーが行う必要があるのは2つの変数を編集し、グラフの色を選択することだけです。グラフの多様性を示すいくつかの例を次に示します。
<図> <図> <図> <図> <図>グラフは、6秒間隔で温度をライブでプロットし、値はドットで表示され、ドットは他のドットに線で接続されます。コードの開始から経過した秒数がx軸に表示され、値の範囲がy軸に表示されます。
プロジェクトは簡単に機能し、ArduinoMegaはDHT11センサーの値を読み取り、温度を変数に保存してから、カスタマイズされたグラフに値をグラフ化します。これは、機能の概要を示す図です。
<図>これは、プロジェクトのコードの概要を示す画像です。
<図>-
読み取り温度
センサーから温度を読み取ります
-
データの処理
センサーの読み取り値を処理し、グラフにマッピングします。
-
グラフデータ
マップされた値がグラフに表示されます。
このプロジェクトを進めるために知っておく必要があるのは、TFTLCD上で物事がどのように配置されているかを幅広く理解することだけです。これについては以下で説明します。
LCD全体をキャンバスと呼びます。これはすべてが描画される場所です。すべてのTFTLCDライブラリはまったく同じように機能するため、このコードの関数は他のライブラリでも機能するはずです。以下は、TFT LCDに描かれた四辺形(長方形)のスケッチです。
<図>このスケッチでは、長方形が描画され、各ポイントにラベルが付けられています。長方形の描画に使用されるコード行はこれです。
tft.fillRect(originX、originY、sizeX、sizeY、Colour);
-
originX
上の図では「z」で表されています。これは、画面の右側から形状までの距離です。
-
originY
スケッチでは「x」で表されます。これは、画面の上部から形状までの距離です。
-
sizeX
はx軸上の図形のサイズで、これは図形の長さです。
-
sizeY
はy軸上の形状のサイズであり、これは形状の高さです。
メリット
ユーザー 運用 これ プロジェクト します メリット 入力:
- TFTLCDにセンサーデータをグラフ化する
- 数秒で完了
プロジェクトの構築
ステップ 1: 必須 装置
このプロジェクトでは、DHT 11の温度と湿度のセンサーを使用して温度データを受信していますが、どのセンサーでも使用できます。センサーの変更については、後で詳しく説明します。
- 1、Arduino Mega
- 1、Elegoo 2.8'TFT LCD
- 1、DHT11センサー
- 1、ブレッドボード
- ジャンパー線
ステップ 2: 接続 回路
プロジェクトの回路図は次のとおりです。DHT11センサーをArduinoMegaに接続するだけで、準備完了です。
<図>ステップ3:コードの確認
コードには3つの主要な部分があります:
- グラフの設定
- 温度の読み取り
- グラフを描く
これらのセクションについては、以下で説明します。
- グラフの設定
//描画タイトルtft.setCursor(10、10); //カーソルを設定しますtft.setTextColor(BLUE); //テキストの色を設定しますtft.setTextSize(4); //テキストのサイズを設定しますtft.println(graphName); //アウトラインを描画しますtft.drawLine(originX、originY、(originX + sizeX)、originY、graphColor); tft.drawLine(originX、originY、originX、(originY-sizeY)、graphColor); //ラベルを描画しますfor(int i =0; i
コードのこの部分は、グラフのアウトラインを描画し、x軸とy軸の線を描画し、マークも描画し、y軸に値のラベルを付けます。
- 読む 温度
chk =DHT.read11(22); temp =(DHT.temperature);
この短いコード行は、DHT 11センサーから温度を読み取り、それを変数に格納します。
- 描画 グラフ
if(blockPos <8){//時刻を出力tft.setCursor((mark [valuePos] -5)、(originY + 16)); tft.setTextColor(graphColor、WHITE); tft.setTextSize(1); tft.println(timeBlock [valuePos]); //値をマップしますlocationBlock [valuePos] =map(temp、0、graphRange、originY、(originY --sizeY)); //ポイントを描画しますtft.fillRect((mark [valuePos] -1)、(locationBlock [valuePos] -1)、markSize、markSize、pointColor); //前のポイントに接続してみますif(valuePos!=0){tft.drawLine(mark [valuePos]、locationBlock [valuePos]、mark [(valuePos-1)]、locationBlock [(valuePos-1)]、lineColor); } blockPos ++; } else {//グラフのキャンバスをクリアしますtft.fillRect((originX + 2)、(originY --sizeY)、sizeX、sizeY、WHITE); //値をマップします-現在のポイントlocationBlock [valuePos] =map(temp、0、graphRange、originY、(originY-sizeY)); //ポイントを描画します-現在のポイントtft.fillRect((mark [7])、(locationBlock [valuePos] -1)、markSize、markSize、pointColor); //すべてのポイントを描画しますfor(int i =0; i <8; i ++){tft.fillRect((mark [(blockPos-(i + 1))]-1)、(locationBlock [(valuePos --i)]- 1)、markSize、markSize、pointColor); } //すべての線を描画するfor(int i =0; i <7; i ++){tft.drawLine(mark [blockPos-(i + 1)]、locationBlock [valuePos --i]、mark [blockPos-(i + 2)]、locationBlock [valuePos-(i + 1)]、lineColor); } //時間ラベルを変更するfor(int i =0; i <=8; i ++){tft.setCursor((mark [(blockPos --i)]-5)、(originY + 16)); tft.setTextColor(graphColor、WHITE); tft.setTextSize(1); tft.println(timeBlock [valuePos --i]); }} valuePos ++;
コードのこの長い部分は、グラフのポイントをそれらの値で描画し、線で結合します。コードは、グラフのキャンバスがいっぱいになっているかどうかをチェックし、いっぱいになっている場合は、グラフの最初の値の排出を開始します新しい値を挿入するためのスペースを確保するために他の値を上に移動します。まだスペースが残っている場合、デバイスは間隔を置いて値を追加し続けます。
グラフのパーソナライズ
このグラフの面白いところは、100%編集可能であるため、ユーザーはグラフのサイズ、場所、色を編集でき、柔軟性のおかげでグラフに任意のデータを表示することもできます。気にする必要のある変数はすべてあります。
bool proDebug =0; uint16_tgraphColor =BLUE; uint16_t pointColor =BLACK; uint16_t lineColor =GREEN;文字列graphName ="時間グラフ"; intgraphRange =50; int markSize =3;
-
proDebug
はプロジェクトに組み込まれているデバッグユーティリティです。デフォルトでは0に設定されています。1/ trueに設定すると、現在の温度がシリアルモニターに出力されます。これはデバッグユーティリティです。有効にすると、シリアルモニターはコードを実行するには、開いている必要があります。
-
graphColor
グラフの色を設定し、x線とy線、およびそれらのラベルをこの色に設定します。
-
pointColour
グラフ上の値を示すポイントの色を表します。
-
lineColour
グラフ上の点を結ぶ線の色を選択した色に設定します。
-
graphRange
はグラフのバックボーンです。正しく設定されていることが非常に重要であることに注意してください。これはグラフ化できる最大値を表します。温度センサーを使用しています。値が50ºCを超えるとは思わないので、値を50に設定すると、Rawアナログ入力をグラフ化する場合は、graphRangeを1024に設定できます。これは、アナログピンが表示できる最大値です。
-
markSize
グラフ上のセンサーの値を示すポイントのサイズを表し、値は正方形の長さを表します。
そして、それだけです。心配する必要があるのはそれだけです。残りの変数は、Arduinoによって自動的に計算されます。
変更 価値
部屋の温度をグラフ化するのは良いことですが、グラフにセンサーデータを表示できればさらに良いです。また、数行のコードを編集するだけで、土壌水分から光までのデータをグラフ化できます。強度。これを行うためのガイドです。
<図> <図> <図> <図> <図> <図>行く さらに
プロジェクトをさらに実験して、originX、originY、sizeX、sizeYの定数を編集して、グラフに画面上の異なるサイズと位置を与えることができます。メインスケッチに添付されたヘッダーファイルがあり、いくつかの色のカラーコードが含まれています。チャートとバーの色を変更してみてください。これで、パーソナライズされたグラフの準備が整いました。
ライブラリ
- Elegoo Libraries-Copyright(c)2012 Adafruit Industries under the BSDLicense。
- DHT-著者RobTillaartこのライブラリはパブリックドメインです
背景
最近、棒グラフで1、2、3、または4の値をグラフ化するプロジェクトを公開しました。グラフ用の別のテンプレートを公開することにしました。混乱を招く恐れのある線がいたるところにない棒グラフのテンプレートはないので、もう一度計算を行い、誰もが履歴グラフにデータをグラフ化できる簡単なプロジェクトを公開することにしました。
<図> <図>
コード
TFTHistoryGraph
コード全体 回路図
Schematics_g5pey3GWqv.fzz 製造プロセス