ハードシーケンサ開発。(その9:ディスプレイ表示の動作確認3)
今利用しようとしているのがモノクロ液晶で解像度に制約があるため、
他のモニタが使えないかと考えて試してみてる。
サイズ的にRaspberryPiPicoに装着する想定のディスプレイがあるのでこれが使えると便利。
Raspberry Pi Pico用 1.8インチ 液晶モジュール 160×128 – スイッチサイエンス (switch-science.com)
割と楽に動作確認ができた。(前回みたいにオーディオに関するピンの追加実装が必要だと面倒なので)
ソースコード
#include <Adafruit_GFX.h>; // Core graphics library #include <Adafruit_ST7735.h>; // Hardware-specific library for ST7735 #include <SPI.h>; #include <U8g2_for_Adafruit_GFX.h>; //#define TFT_MOSI 23(sda) //#define TFT_SCLK 18(scl) /* DC:8 CS:9 LCD_CLK:10 LCD_DIN:11 LCD_RST:12 LCD_BL:13 */ #define TFT_CS D9 // Chip select control pin #define TFT_DC D8 // Data Command control pin #define TFT_RST D12 // Reset pin (could connect to RST pin) //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, D11, D10, TFT_RST); //Adafruit_ST7735(int8_t CS, int8_t RS, int8_t SID, int8_t SCLK, int8_t RST = -1); U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx; void setup(void) { tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab tft.setRotation(0); tft.fillScreen(ST77XX_BLACK); u8g2_for_adafruit_gfx.begin(tft); } void loop() { u8g2_for_adafruit_gfx.setFontMode(0); // use u8g2 none transparent mode u8g2_for_adafruit_gfx.setFontDirection(0); // left to right (this is default) u8g2_for_adafruit_gfx.setForegroundColor(ST77XX_YELLOW); // apply Adafruit GFX color u8g2_for_adafruit_gfx.setFont(u8g2_font_wqy14_t_gb2312 ); // select u8g2 font from here: https://github.com/olikraus/u8g2/wiki/fntlistall u8g2_for_adafruit_gfx.setCursor(20, 20); // start writing at this position u8g2_for_adafruit_gfx.print("Hello,world"); delay(1000); }
ディスプレイについてはSPI通信で動作確認ができた。
また、ST7735SというTFT液晶のドライバが必要のため、これに対応するドライバを利用する。
ディスプレイの表示機構については以下を利用。
- U8G2 for Adafruit_GFX:テキスト表示用のライブラリ。
元々モノクロ用だけど、本家と分割してカラー液晶用に作成されてる
olikraus/U8g2_for_Adafruit_GFX: Add U8g2 fonts to any Adafruit GFX based graphics library. (github.com) - Adafruit_GFX:カラー液晶用描画ライブラリ
Overview | Adafruit GFX Graphics Library | Adafruit Learning System
問題なのが、ピンの定義の方法がRP2040に対応していないところ。(ライブラリ側の問題と思料)
RP2040は全部デジタルピンとして処理できるので、「Dxx」という形で記述すれば認識可能。
RP2040はデジタル・アナログという区別に乏しいので、こういうところでつまずく気がしてる。
参考資料
st7735 support · Issue #18 · olikraus/U8g2_for_Adafruit_GFX (github.com)