でも使いたい機能は表示だけだし、表示するものだって文字だけで良い。なのでサンプルスケッチを良く見て極力シンプルなスケッチにする事にする。
その練習用スケッチはこれ。
(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
#include
// 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でどれだけの文字数が入るかのテストもしてみた。
![](https://blogimg.goo.ne.jp/user_image/17/41/0118f0a303135a2632e1a19930f232d7.jpg)
13x13なのでサイズ3で十分とわかる。必要な行数は最低9行だから。
一応出来上がり予想画面はこうなった。
左に計測点の名前、と言うか記号で、その右に温度の数値が出る。今のところ未だセンサーは無いので数値はスケッチ上に直接数値を書いてある。
![](https://blogimg.goo.ne.jp/user_image/03/6b/9b551aa3e5e2ffceb9a090f6569f4b88.jpg)
計測は数十秒毎か1分毎でも構わないので表示の更新は緩慢。いつ変わったかわかりにくいので更新前にブルースクリーンが1秒程度出るようにした。それでフリーズせずに動いているとわかると言う意味もある。
![](https://blogimg.goo.ne.jp/user_image/44/8a/3f63440420c1d3fa80d3adecf98f673d.jpg)
この後は温度センサーのところに入るつもり。
前に作った温度センサーのスケッチとミックスするだけのはず。
つづく