Arduino
lcd
液晶
TFT
ILI9341
0
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

Arduino UNOにTFT LCDを接続しよう

Arduino UNOに汎用のILI9341 TFT液晶モジュールを接続した時の資料です。

Arduino の出力装置に液晶モジュールを追加したときの資料です。

ハードの用意

●Arduino UNO
●LCD

aitendo の★2.8インチ★TFT液晶モジュール★240x320★ [M028C9341SD]
https://www.aitendo.com/product/16038
コントローラチップ:ILI9341
動作電源:3.3V

●3.3V<->5V相互変換モジュール

LCDの動作電源が3.3Vなので電圧変換必須です。
aliexpressなどで数百円程度で売ってます。

●とりあえず配線は以下のようにしました。

8pin -> LCDのMISO
9pin -> LCDのSCK
10pin -> LCDのMOSI
11pin -> LCDのDC
12pin -> LCDのRESET
13pin -> LCDのCS

3.3Vの電源とGNDとバックライトのLEDもつなぎます。

標準的なSPI通信です。SPIはシリアル通信なのでジャンパ線は少な目です。

全信号ピンは直結はせずに 5V <-> 3.3V 電圧変換をかませます。
VCCは3.3VでバックライトのLEDも3.3Vです。

ソフトの用意

●次の3つのライブラリをArduino IDEで使います。
Arduino IDEのライブラリマネージャから検索しinstallします。

Adafruit GFX Library
Adafruit ILI9341
Adafruit BusIO

動作確認

Arduiono IDEから
ファイル -> スケッチ例 -> Adafruit ILI9341 -> graphicstest
でテストします。

●defineの書き換え
以下のdefineを追加します。


//#define TFT_DC 9
//#define TFT_CS 10
#define TFT_CS 13
#define TFT_DC 11
#define TFT_MOSI 10
#define TFT_CLK 9
#define TFT_RST 12
#define TFT_MISO 8

define のピン番号はLCDに書かれてあるピンとArduinoのピン番号に合わせる必要があります。

スケッチのコンストラクタを書き換えます。


// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
// Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// If using the breakout, change pins as desired
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

コンパイルしマイコンボードに書き込めば完成です。

IMG_1609.JPG

スケッチのgraphicstestのソースを適当に好きなように書き換えれば自分の思うがままの表示が出せると思います。
Adafruiライブラリは充実していてdraw系の関数は一通りそろっていると思います。

GFX library for arduinoでの動作確認

GFX library for arduinoを使って動作確認できます。
ライブラリ管理からinstallしdefineなどを修正すれば動作しました。

examplesのHello worldなどでピン番号をあわせれば動きます。


#define TFT_CS 13
#define TFT_DC 11
#define TFT_MOSI 10
#define TFT_SCK 9
#define TFT_RST 12
#define TFT_MISO 8

Arduino_DataBus *bus = new Arduino_SWSPI(TFT_DC /* DC */, TFT_CS /* CS */, TFT_SCK /* SCK */, TFT_MOSI /* MOSI */, -1 /* MISO */);

Arduino_GFX *gfx = new Arduino_ILI9341(bus, TFT_RST  /* RST */, 0 /* rotation */, false /* IPS */);

LCDのコントローラの型番でコンストラクタが変わります。
ILI9488の場合は
Arduino_ILI9488_18bit
で動く場合があります。

Adafruit

Adafruitという単語がよくでてきます。
これはAdafruitというユニークな製品を生み出してる最先端メーカーです。
社長が女性でガチガチのエンジニアっぽいです。
なるほどと思わせるようなものが色々あります。
7インチTFT + SPI + アクセラレータなんかもかなり需要があるのではと思います。

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
nodas2002
現役プロプログラマー&SE

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Azure Machine Learning を使って機械学習に関するナレッジをシェアしよう
~
Remote TestKitを使ってレビューを書こう!
~
0
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー