2019年9月8日日曜日

Teensy3.6でILI9341が利用されている320x240のLCDを動かしてみた


背景

Teensy3.6とは、Ardinoというマイコンボードより計算能力があり、Arduinoを開発できる環境でプログラムの開発・書き込みが出来るマイコンボードです。

ILI9341とはLCDのドライバです。
M5StackというLCDなどが付いたマイコンボードでもILI9341で動くLCDが利用されています。

利用には成功しましたが、ライブラリの選択やピンの接続方法に時間を要したので、備忘録を兼ねてやったことを共有します。

使ったもの

  • Teensy3.6 1つ
    スイッチサイエンス製造元で買えます。
  • Teensy3.6を開発出来るようにしたPC 1台
    Ubuntu18.04でPlatformIOを利用して動作を確認しました。
  • 320x240 LCD 1つ
    amazonやaliexpressで買えます。
  • ブレッドボード 2枚
  • ジャンパワイヤ 1セット
  • 抵抗 1k 2つ

配線

このように配線します。

Teensy LCD
9 CS
10 DC
11 MOSI
12 MISO
3V3 VCC
3V3に1kを通して接続 LED, RESET

LCDのDCとCSはプログラムで利用するピンを変えられますが、その用途で利用可能なピンは限られています。
他のピンを利用する場合は、Teensy3.5, 3.6のkickstarterのページで示されているピンの役割でCS0と書かれているピンを利用してください。
(もしかしたらDSはどのピンでも良いのかもしれませんが、未検証です。)

実際に配線するとこうなりました。



ライブラリをインストール

ILI9341_3tというライブラリの使い勝手が良さそうだったので、自分はそれを利用しました。

Arduino IDEならライブラリマネージャーからILI9341_t3をインストール、PlatformIOならplatformio.iniのlib_depsにILI9341_t3を記述すれば利用できます。

プログラム

先ほどインストールしたライブラリILI9341_3tを利用して「Hello on LCD at (経過したミリ秒)」という文字を1秒ごとに更新しながらLCDに表示するプログラムを紹介します。

#include <Arduino.h>
#include <SPI.h>
#include <ILI9341_t3.h>
#include <font_Arial.h>

const uint8_t TFT_CS = 9;
const uint8_t TFT_DC = 10;

ILI9341_t3 tft = ILI9341_t3(TFT_CS, TFT_DC);

void setup() {
  tft.begin();
  tft.setTextColor(ILI9341_WHITE);
  tft.setFont(Arial_18);
  tft.setRotation(3);
}

void loop() {
  tft.fillScreen(ILI9341_BLACK);
  tft.setCursor(0, 0);
  tft.println("Hello");
  tft.println("on LCD");
  tft.println("at " + String(millis()));
  delay(1000);
}

書き込んで動かすと、期待通りの情報が表示されました。


まとめ

Teensy3.6でILI9341が使われているLCDを利用できました。
これにより、M5StackでLCDを利用しつつもピンが足りない用途に対してTeensy3.6を適用できそうです。

参考

Color 320x240 TFT Touchscreen, ILI9341 Controller Chip
ILI9341_t3/examples/DemoSauce/DemoSauce.ino
Teensy 3.5 & 3.6

変更履歴

2019.10.02
3.3Vの接続先がRESETになっていたのでVCCに修正しました。
2019.11.29
platformioの設定ファイルを「platformio.ino」と間違えていたので、「platformio.ini」 に修正しました。

0 件のコメント :