1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズピコのArdiuno IDEからST7735TFT液晶を使う

Posted at

Arduino IDE用 日本語表示ライブラリ(ST7735)

Rapberry PI Pico用 ST7735 TFT液晶 SDKライブラリ を、Arduino IDEから使えるようにしました。

Raspberry PI PICO 上で、SPI接続された ST7735 TFT液晶をコントロールするためのライブラリです。日本語表示等に対応しています。

概要

ガッツリとビルドしてから使う公式SDKに比べ、Arduino IDEは、何と言っても2~3クリックで使えるものがなにか出来上がる、というのが華のようです。

というわけで、このページでは使う人向けに書いてあります。例えば、搭載してあるフォントを変更したい、などの場合には、公式SDK版 を参照してください。基本的に、元になった公式SDK用にいろいろかぶせる形にしてあるだけなので、主要な変更点や呼びだせる関数名は同じです。

ソフトウェア

Githubの https://github.com/HisayukiNomura/ST7735-ArduinoLib を開き、リリースページから、zipファイルをダウンロードします。
リリースをクリック
1.png

SourceCode(zip)をクリック
1.png

Arduino IDEを起動し、[スケッチ] > [ライブラリのインクルード] > [zip形式のライブラリをインストール…]をクリック、前の手順でダウンロードしたzipファイルを読み込みます。

1.png

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

1.png

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

1.png

日本語を表示するための、もっとも簡単なスケッチは次のようになります。
グローバルに書かれている部分や、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 での結線例は次のようになります。シルクが間違えているような気がするので注意が必要です。

RaspTFT.png

ほかのデバイスで使用する場合、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ライセンスに基づくものとします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?