いやいや、いけません。
ボラのExcelやらんとイケンのに、朝から晩までArduino+TFT一色に染まってしまった。
これだから、禁断の商品は怖い。
消費電力は5V 0.17A ~ 0.2A 程度
グラフィックの速度に期待を持ってはいけません。
PC8801以下の速度です。PC8001並みかな。
しょうがないので、カウントダウンタイマーを作ってみた。
どんなものか少し判ったので、少しは乾きが収まったように感じる。
少し製品が判ってきたので、Excel勉強に戻ってTFTは構想の身に留めましょう。
文字表示の際の注意点は
1 tft.setCursor(x,y); は、任意の位置に文字を書き込める。x,yは多分左の端
2 tft.setRotation(rotation); rotation = 3 で 画面横置き(左側がUSBソケット)になる
3 文字を同じ位置に上書きしても、前の文字は消えない。
そのまま重ね文字になるので、背景色で同じ文字を書いて消すことになる(FillRectでもOK)
4 内臓フォントはプロポーショナルなので、空白で位置合わせをしようとしてもうまくいかない
5 タイマー再描画の際はちらつきが生じる
6 視認性の良いフォントサイズは「2」
7 書き込みのタイミングが悪いと失敗するので、画面に真っ赤な失敗文字が出てもメゲずに再度「Ctrl+U」を押そう
8 画面消去(tft.fillScreen)はスダレが下りるような速度
原因が分らんのだが、ある時期、28カウント目辺りで、必ずシステムリセットがかかる状況が続いた。
PCのUSBから電源を取っていたが、電源電圧低下でもあったのか?
いつの間にか直っていた・・・
あれれ、リセットが発生するのは同じ30秒前後だ!
電池駆動にして一晩動かしたが、朝までリセットはかかっていなかった。
どうも、パソコンとの相性には違いない。 PCからの電源供給不足だったようだ。
電源を直接取れば安定するかとUSB接続と同時にDCアダプタへ12Vを挿したら、暫くすると基盤が大加熱状態
危うく壊すところでした orz
こいつはサインスマートの純正基盤なのだっ!高かったんだぞー!
タイマカウント=0でターミネータのT100画像を表示させようと、BMPを240*320 24bitで作り4GのマイクロSDへ入れるもエラーで表示不能。
画像作成がJtrimでイカンのかとWindows純正のpaint(使いにくいよなあ)で作るも同じ。
CDサンプルに入っていた画像も良く見ると、4枚中虎と花しか表示されていないし、途中で表示が止まっている。
何か怪しい・・・
また眠れない夜が続きそう。
だが、むりやり午前1時過ぎに就寝した。
あ~、買うんじゃなかった。
----------------------------
// スクリーン 縦横設定、背景色設定
// フォントサイズと色設定
// 注意点:文字を同じ位置に背景色で書かないと前の文字が消えません
//
// 2018/06/21
#include <Elegoo_GFX.h> // Core graphics library
#include <Elegoo_TFTLCD.h> // Hardware-specific library
#define identifier 0x9341 // my board ID
#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
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define rotation 3 // 画面横置き(左USBソケット)
#define backColor WHITE // 画面背景色
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // オブジェクト生成
void setup(void) {
//Serial.begin(9600);
tft.begin(identifier); // watashino TFTのICチップ型
tft.setRotation(rotation); // 画面の向き設定
}
//-------- 同じ位置に数字を表示し 1秒で消去する ----------
void dspCount(int cnt){
#define x 120 // 表示位置
#define y 120
tft.setTextColor(RED); // 表示文字色
tft.setCursor(x,y);
tft.println(cnt); // 数字を表示
delay(1000);
tft.setCursor(x,y);
tft.setTextColor(backColor); // 同じ位置にバックカラーで同じ文字を描画して消す
tft.println(cnt); // そうしないと重ね書きになる
}
//-------- main ----------
void loop(void) {
int i;
tft.fillScreen(backColor); // 画面初期化
tft.setTextSize(2); // FontSize
tft.setTextColor(BLUE); // 文字色
tft.setCursor(20,50); // 画面は320*240
tft.println("*** Count Down Timer ***");
tft.setTextSize(1);
tft.setCursor(55,220);
tft.println("my first TFT program byx.xxxxxx"); // CopyRightを表示
tft.setCursor(133,230); // fontがpropなのでspaceで位置合わせ出来ない
tft.print ("2018/06/21");
tft.setTextSize(6);
for (i=999; i>=0; i--){
dspCount(i); // 文字表示
}
tft.fillScreen(YELLOW); // 画面初期化
tft.setTextSize(2);
tft.setTextColor(RED); // 表示文字色
tft.setCursor(80,120);
tft.println("Terminated ...."); // 終了
delay(3000);
tft.fillScreen(BLACK); // 画面消去
delay(3000);
}