
これまでPico でディスプレイを使う場合、シリアル接続はI2C が多かったですが、今回は
ST7735を使ったディスプレイボードをSPI (シリアル・ペリフェラル・インタフェース)接続で使ってみます。
背面にSDカードスロット(今回は触りません)
Pico とは以下のように結線(SPI0)します。
下段LEDはバックライト用で別系統で電源を供給しています。
開発母艦はラズパイ4で開発環境はArduino IDE です(デフォルトでインストール済み)。
事前準備
Earle Philhower版のボードマネージャーが必要です。設定は以下を参照
Arduino IDE でPi Pico Wの開発用にEarle Philhower版を使う
メニュのツールー>ボードー>ボードマネージャーー>Raspberry Pi RP2040(4.2.1)ー>Raspberry Pi Pico
さらにメニュのスケッチー>ライブラリをインクルードー>ライブラリを管理…
で、以下の2つをインストールしておきます。
●Adafruit GFX Library
●Adafruit ST7735 and ST7789 Library
BOOTSELボタンを押しながらPico とラズパイを接続し、メニュのツールー>シリアルポートで適切なポートを選択
文字表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#include <Adafruit_ST7735.h> #include <Adafruit_ST7789.h> #include <Adafruit_ST77xx.h> #include <Adafruit_GFX.h> #include <Adafruit_ST7735.h> #include <SPI.h> //ピン番号設定 #define TFT_DC 26 // DC #define TFT_CS 17 // CS #define TFT_SCLK 18 // Clock #define TFT_MOSI 19 // MOSI #define TFT_RST 22 // Reset //SPI0をコンストラクタに指定する Adafruit_ST7735 tft = Adafruit_ST7735(&SPI, TFT_CS, TFT_DC, TFT_RST); void setup(void) { SPI.setTX(TFT_MOSI); //SPI 設定 SPI.setSCK(TFT_SCLK); tft.initR(INITR_BLACKTAB); //I初期化 tft.fillScreen(ST77XX_BLACK); //背景の塗りつぶし //テキスト表示 tft.setRotation(3); //画面回転 tft.setTextSize(1); //文字サイズ tft.setCursor(0, 0); //カーソル位置 //----------------------------------------------------- for (int i = 0; i < 3; i++) { tft.setTextColor(ST77XX_RED); tft.printf("12345678901234567890123456\n"); tft.setTextColor(ST77XX_GREEN); tft.printf("12345678901234567890123456\n"); tft.setTextColor(ST77XX_BLUE); tft.printf("12345678901234567890123456\n"); tft.setTextColor(ST77XX_YELLOW); tft.printf("12345678901234567890123456\n"); tft.setTextColor(ST77XX_WHITE); tft.printf("12345678901234567890123456\n"); } tft.setTextColor(ST77XX_RED); tft.printf("12345678901234567890123456\n"); } void loop() { } |
画面いっぱいにサイズ1の数字を埋めてみました。
26 x 16
回転
テキスト表示の画面回転の引数(n)を変えてみます。
tft.setRotation(n);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//テキスト表示 //画面回転 tft.setRotation(1); //文字サイズ tft.setTextSize(1); //カーソル初期位置 tft.setCursor(0, 20); tft.setTextColor(ST77XX_RED); tft.printf("ST7735\n"); tft.setTextColor(ST77XX_GREEN); tft.printf("SPI\n"); tft.setTextColor(ST77XX_BLUE); tft.printf("TFT (LCD)\n"); tft.setTextColor(ST77XX_YELLOW); tft.printf("DISPLAY\n"); |
赤い字で示しているのが、tft.setRotation()の引数です。
Adafruit製のライブラリを使ったサンプルプログラムを呼んで、線、矩形、円などを描画
サンプルを使ってみます。
メニュのファイルー>スケッチ例ー>Adafruit ST7735 and ST7789 Libraryー>graphictest
3か所修正後、コンパイルしてPico に書き込み実行してみます。
修正1
#define TFT_CS 10 #define TFT_CS 17
#define TFT_RST 9 ー> #define TFT_RST 22
#define TFT_DC 8 #define TFT_DC 28
修正2
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
↓
Adafruit_ST7735 tft = Adafruit_ST7735(&SPI , TFT_CS, TFT_DC, TFT_RST);
修正3
//#define TFT_MOSI 11 ー> #define TFT_MOSI 19
//#define TFT_SCLK 13 ー> #define TFT_SCLK 18
Leave a Reply