Arduino(3)続・カラーLCDを接続してみる

前回はArduino UNOにaitendoの2.4インチカラーLCD「UL024TF」を接続し、表示ができることを確認しました。

UL024TFには、このほかにmicroSDカードインタフェースとタッチパネルが組み込まれています。これで1,500円とは安いですね。

さて今回は、Adafruit TFTLCD-Libraryに付属している残りのサンプル、「rotationtest」「tftbmp」「tftpaint」を動かしてみます。

1.rotationtest

rotationtestは、その名の通り画像を回転表示するテストです。
回転といっても任意の角度ではなく、90度ずつ回転するだけですが・・・。

まずは試してみましょう。
前回同様、メニューから「ファイル」→「スケッチの例」→「TFTLCD-Library-master」で「rotationtest」を選択し、「→」ボタンでコンパイルしてArduinoに書き込みます。

このプログラムは、Arduinoがシリアルポートから何か受信するごとに表示を90度回転させるようになっています。
IDE内蔵のターミナルウインドウを呼び出しましょう。
「ツール」メニューの「シリアルモニタ」を選択すると、ターミナルウインドウが表示されます。

arduino013.jpg
arduino014.jpg

このプログラムに限らず、シリアルポートはArduinoとのほとんど唯一の通信手段ですので、エラー等を確認したいときはとりあえずシリアルモニタを呼び出してみるのが良いでしょう。

rotationtestでは、シリアルモニタの「送信」ボタンを押すと(文字は何も入れる必要なし)、Arduinoから0,1,2,3という数字が送られてきて、その都度表示が回転します。

表示の内容は
「ピクセル」→「斜線」→「縦横直線」→「矩形」→「塗りつぶし矩形」→「円」→「塗りつぶし円」→「テキスト」
の順で変化します。「ピクセル」は1ピクセルだけの描画ですので、よく見ないと見つからないかもしれません。

2.tftbmp

tftbmpは、microSDカードから画像を読み出してLCDに表示するデモプログラムです。
フォトフレームの簡易版と思えば良いでしょう。

このプログラムは、microSDカードから”woof.bmp”および”miniwoof.bmp”というファイルを読み出して、それをLCDに表示します。
microSDカードを用意し、TFTLCD-Libraryの「bitmaps」フォルダ(ライブラリ\ドキュメント\Arduino\libraries\TFTLCD-Library-master\bitmaps)に入っている”woof.bmp”と”miniwoof.bmp”をmicroSDカードへコピーして、それをUL024TFのmicroSDカードホルダへセットしてください。

tftbmpを実行すると、画像が表示されます。

arduino011.jpg

正直なところ画質は悪いです。このLCDは写真の表示には向いていませんね。

3.tftpaint

tftpaintは、その名の通りタッチパネルでお絵描きをするデモです。
このプログラムは、追加のライブラリおよび若干のプログラムの修正が必要です。

まず、以下からタッチパネルのライブラリをダウンロードし、IDEのライブラリに追加します。
ダウンロードからライブラリ追加までの方法は、前回の記事で書きました。

adafruit/Touch-Screen-Library · GitHub

次に、「スケッチの例」の「TFTLCD-Library-master」からtftpaintを開きます。

そして、以下のように修正を行います。

スクロールバーが上から1/4くらいの位置、赤い箇所を修正

//   D5 connects to digital pin 38
//   D6 connects to digital pin 39
//   D7 connects to digital pin 40

#define YP A3  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 9   // can be a digital pin
#define XP 8   // can be a digital pin

#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940

 

スクロールバーが下から1/4くらいの位置、赤い行を追加

    if (p.y < (TS_MINY-5)) { Serial.println("erase"); // press the bottom of the screen to erase tft.fillRect(0, BOXSIZE, tft.width(), tft.height()-BOXSIZE, BLACK); } // scale from 0->1023 to tft.width
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);
p.x = 240-p.x;
p.y = 320-p.y;

 

以上の修正で、UL024TFのタッチパネルを使うことができます。
色を選択する以外、ほとんど何もできないお絵描きソフトではありますが、ちゃんと動きます。
画面最下部(USBジャック側)をタッチすると画面をクリアします。

arduino010.jpg

コメント