Arduino IDE用 日本語表示ライブラリ(ST7735)
Rapberry PI Pico用 ST7735 TFT液晶 SDKライブラリ を、Arduino IDEから使えるようにしました。
Raspberry PI PICO 上で、SPI接続された ST7735 TFT液晶をコントロールするためのライブラリです。日本語表示等に対応しています。
- Raspberry PI Pico 公式 SDK用 (https://qiita.com/BUBUBB/items/3caf2aefba4ae3a715e1)
- Micropython用(https://qiita.com/BUBUBB/items/8810ed28da866443635a)
- Arduino用(このページ)
概要
ガッツリとビルドしてから使う公式SDKに比べ、Arduino IDEは、何と言っても2~3クリックで使えるものがなにか出来上がる、というのが華のようです。
というわけで、このページでは使う人向けに書いてあります。例えば、搭載してあるフォントを変更したい、などの場合には、公式SDK版 を参照してください。基本的に、元になった公式SDK用にいろいろかぶせる形にしてあるだけなので、主要な変更点や呼びだせる関数名は同じです。
ソフトウェア
Githubの https://github.com/HisayukiNomura/ST7735-ArduinoLib を開き、リリースページから、zipファイルをダウンロードします。
リリースをクリック
Arduino IDEを起動し、[スケッチ] > [ライブラリのインクルード] > [zip形式のライブラリをインストール…]をクリック、前の手順でダウンロードしたzipファイルを読み込みます。

読み込みが完了したら、Ardiuno IDEを念のため再起動します。再起動後、再度ライブラリのインクルードを表示すると、KNJGfxというライブラリが追加されています。

[ファイル]>[スケッチ例]>[KNJGfx]>[SPIDisp]を選択すると、サンプルのスケッチが読み込まれます。
サンプルスケッチは、このライブラリで可能なことの多くが含まれているため、かなり大規模です。

日本語を表示するための、もっとも簡単なスケッチは次のようになります。
グローバルに書かれている部分や、setup()の中は、あまり変更する必要はありません。「おまじない」と思っても大丈夫です。
「ふざけるな、大切なことが書いてあるだろう!」と思った人は、その通りです。そういう人にはそもそも説明が不要だと思いますので、思う通りに理解してください。
/// SPIの設定と、どのピンを使用するかの定義
SPISettings spisettings(1000000, MSBFIRST, SPI_MODE3); // SPI通信の設定を作成する
const int SPI_PORT = 0;
const int RXDC_PIN = 16;
const int CS_PIN = 17;
const int SCK_PIN = 18;
const int MOSI_PIN = 19;
const int RESET_PIN = 0;
const int DEBUG_PIN = 0;
/// ライブラリに、SPIとして使用されているピン番号を伝える
ST7735 st7735;
HW spiHW(SPI_PORT, RXDC_PIN, CS_PIN, SCK_PIN, MOSI_PIN, RESET_PIN, DEBUG_PIN);
void setup() {
/// SPIの初期化。それぞれのGPIOに対して、SPI機能を持たせることを伝える
spi_init(spiHW.portSPI, 10*1000*1000);
gpio_set_function(spiHW._dc, GPIO_FUNC_SPI);
gpio_set_function(spiHW._sck,GPIO_FUNC_SPI);
gpio_set_function(spiHW._tx, GPIO_FUNC_SPI);
gpio_put(spiHW._cs,1);
/// ライブラリの初期化
spiHW.init();
st7735.SetSPIHW(&spiHW);
st7735.doInit();
}
void loop() {
st7735.fillScreen(ST7735Color.BLACK);
st7735.drawTextKanji(0,0,"こんにちは!",ST7735Color.WHITE, ST7735Color.BLACK, 1);
}
ハードウェア
Raspberry PI Picoと、TFT液晶は次のように接続します。このコントローラでは、デバイス側からマイコン側への信号を示す、MISO(Master IN Slave Out)は使用せず、Data/Command としてコマンド送信なのかデータ送信なのかを、マイコンが示すために使用します。Data/Commandは、マイコンの機能ではなく普通の汎用IOとして制御するため、使用するピンの制限はありませんが、一応、マイコン側のMISOに接続する形で、サンプルなどは書かれています。
Raspberry PI | ⇔ | TFT液晶 |
---|---|---|
GP16(21Pin)・MISO、SDI、RX、D/C | SDO、DC、(RS) | |
GP17(22Pin)・CSn | CS、CSn、CSB | |
GP18(23Pin)・SCK | SCK、SCL | |
GP19(25Pin)・MOSI、SDO、TX | SDI、RX、(SDA) |
aitendoの1.8インチTFT液晶モジュール M018C7735S541 での結線例は次のようになります。シルクが間違えているような気がするので注意が必要です。

ほかのデバイスで使用する場合、CSn(GP17)、SCK(GP18)、TX/MOSI(GP19)、RX/MISO(GP16)を接続してください。TXはマイコン→デバイスへの信号、RXはデバイス→マイコンへの信号用に用意されています。ただ、ST7735の場合はRXはマイコン→デバイスに対してData/Commandの区別をするために使用されます。
デバイス側の表記によっては、RXとTXの表記は逆になっている(デバイスから見て受信するピンがRX)場合があります。MOSI、MISOと表記されていることもあります。MISOは、Master(マイコン)In Slave(液晶) Out なので、マイコン側にとってはRXに相当します。(多分) この場合、液晶のMISOはマイコン側のRX(GP16)、液晶のMOSIはマイコン側のTX(GP19)に接続することになります。
実行
サンプルプログラムを実行すると次のようになります。
ライブラリの改変
ライブラリのソースコードは、ダウンロードしたzipファイルに含まれています。この中を変更することで、ライブラリの動作を変更できます。
たとえば、次のようなことが可能です。
- 使用する日本語フォントのドット数を変更。8x8/12x12/16x16が使用できます。デフォルトでは12x12が使用されています。
- 使用する日本語フォントの種類を減らしてメモリを節約。デフォルトでは、JISで定義されているすべての文字が含まれています。
- より多くの英文フォントを追加。
- 不要なグラフィック機能を削ってメモリを節約
ソースコードや、変更方法の詳細はRapberry PI Pico用 ST7735 TFT液晶 SDKライブラリの、実装にあわせた変更 ページを参照してください。
権利に関する表記
このライブラリは、Adafruitのグラフィックライブラリを改変して作成されました。
元のライブラリは、2条項BSDライセンスに基づきソースコードの再配布が許可されています。
これに基づいて、本ライブラリの権利も同じ2条項BSDライセンスに基づくものとします。