見出し画像

もんく [マレーシアで働いて13年→2022猫を連れて日本]

2.4インチTFT液晶を買ってみた その2

ライブラリを使うとプログラムの中にライブラリローカルのコマンドが出てくるので使い方を探らないといけないが、液晶表示パネルがタッチスクリーンになっていてしかもSDカードスロットまで付いていると言う複雑なデバイスだと面倒だ。

でも使いたい機能は表示だけだし、表示するものだって文字だけで良い。なのでサンプルスケッチを良く見て極力シンプルなスケッチにする事にする。

その練習用スケッチはこれ。
(IDEにコピーするとちゃんとした表示になります。)

----------------------------------------------


// IMPORTANT: Adafruit_TFTLCD LIBRARY MUST BE SPECIFICALLY
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
// SEE RELEVANT COMMENTS IN Adafruit_TFTLCD.h FOR SETUP.

#include // Core graphics library
#include // Hardware-specific library

// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

//ここから上はサンプルスケッチから変えてない。
//どのピンを何に使っているか知らないし考える必要が無さそうだから。

// Assign human-readable names to some common 16-bit color values:
//色はカラーコード調べるのが面倒だからサンプルのままにした。

#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

Adafruit_TFTLCD_ILI9342 tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// Adafruit_TFTLCD tft;
//この上、何だかわからないのでそのままにした。おまじないだろう。


//サンプルではPC側シリアルにいろいろ出力があったが、
//要らない感じだったのでそこは全部削除した。
//なので下記のように非常にシンプルになった。
void setup(void) {

tft.reset();
tft.begin();

}


//loopの中はもともと簡単だったけれど、時々画面の向きを変える命令が入っていた。
//向きは一定のつもりなので削除した。
//uinit8_tと言うのを始めて知ったがintとかと同じ類らしい。放って置く。
//画面の向きはデフォルトが0で横長、1は縦、2と3はそれぞれの逆向き。

void loop(void) {

uint8_t rotation=1; //Set LCD direction 0,1,2,3
tft.setRotation(rotation);

testText(); //Text drawing function 文字表示のサブルーチンみたいなの。

delay(10000); //Drawing interval

tft.fillScreen(BLUE); //画面更新がわかるように青画面を1秒入れた。
delay(1000);

}


ここからが実際の画面表示のルーチン。

unsigned long testText() {
tft.fillScreen(BLACK); //Fill screen with color firstまず全面黒にする。

tft.setCursor(0, 0); //Set origin point原点を指定。

tft.setTextSize(2); //文字サイズ。1行目はサイズ2。
tft.setTextColor(RED); //文字色を赤にする。
tft.print("TEMP. CHECK"); //表示
tft.println(); //空白を表示。(前行をtft.printlnにすれば要らない。消し忘れ。)

tft.setTextSize(1); //最少の空白行を入れている。
tft.println();

tft.setTextSize(3); //ここから後は文字サイズ3になる。
tft.setTextColor(WHITE); //ここから後は文字色は白になる。
tft.print(" AAA1 ");
tft.println(86.3);

tft.print(" AAA2 ");
tft.println(88.2);

tft.println();

tft.setTextColor(GREEN); //ここから後は緑文字。サイズは変えない。
tft.print(" BBB1 ");
tft.println(65.4);

tft.print(" BBB2 ");
tft.println(63.2);

tft.println();

tft.setTextColor(WHITE); //白文字に戻る。
tft.print(" CCC1 ");
tft.println(84.7);

tft.print(" CCC2 ");
tft.println(87.9);

tft.println();

tft.setTextColor(GREEN); //緑文字に戻る。
tft.print(" DDD1 ");
tft.println(87.4);

tft.print(" DDD2 ");
tft.println(83.7);

tft.print(" DDD3 ");
tft.println(88.4);

}



----------------------------------------------

このスケッチを書きながらいろいろ試してみた。

まず、文字の大きさはどの位が良いか?
これは見た目でサイズ3に決定。サイズ3でどれだけの文字数が入るかのテストもしてみた。



13x13なのでサイズ3で十分とわかる。必要な行数は最低9行だから。

一応出来上がり予想画面はこうなった。
左に計測点の名前、と言うか記号で、その右に温度の数値が出る。今のところ未だセンサーは無いので数値はスケッチ上に直接数値を書いてある。



計測は数十秒毎か1分毎でも構わないので表示の更新は緩慢。いつ変わったかわかりにくいので更新前にブルースクリーンが1秒程度出るようにした。それでフリーズせずに動いているとわかると言う意味もある。




この後は温度センサーのところに入るつもり。
前に作った温度センサーのスケッチとミックスするだけのはず。
つづく
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「ABCのAはArduinoのA」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事