EXT LCD
DC :22 RES :19 SDA :33 SCK :23
SD Card
MOSI(SDA):33 MISO:21 SCK :23 CS :25
#include <SD.h> | |
#include <SPI.h> | |
#include <M5Unified.h> | |
#include "lgfx_ST7789.h" | |
LGFX_ST7789 m5lcd; | |
void setup(){ | |
Serial.begin(115200); | |
//CSなしLCDをspi_mode=0で動作させるための処理 | |
constexpr int PANEL2_RST = 19; // 外部LCDのRSTピン番号 | |
pinMode(PANEL2_RST, OUTPUT); | |
digitalWrite(PANEL2_RST, LOW); // 外部LCDのRSTをLOWにする(リセット実行) | |
pinMode(23, OUTPUT); | |
digitalWrite(23, HIGH); // SCLKピンをHIGHにしておく | |
digitalWrite(PANEL2_RST, HIGH); // 外部LCDのRST解除 | |
m5lcd.init(); | |
SD.begin(25, SPI, 25000000); | |
} | |
void loop(){ | |
m5lcd.drawJpgFile(SD, "/test_1.jpg", 0, 0); | |
delay(2000); | |
m5lcd.drawJpgFile(SD, "/test_2.jpg", 0, 0); | |
delay(2000); | |
} |
#include <SD.h> | |
#include <SPI.h> | |
#include <M5Unified.h> | |
#include "lgfx_ST7789.h" | |
LGFX_ST7789 m5lcd; | |
uint8_t buf[50*1024]; | |
void setup(){ | |
Serial.begin(115200); | |
//CSなしLCDをspi_mode=0で動作させるための処理 | |
constexpr int PANEL2_RST = 19; // 外部LCDのRSTピン番号 | |
pinMode(PANEL2_RST, OUTPUT); | |
digitalWrite(PANEL2_RST, LOW); // 外部LCDのRSTをLOWにする(リセット実行) | |
pinMode(23, OUTPUT); | |
digitalWrite(23, HIGH); // SCLKピンをHIGHにしておく | |
digitalWrite(PANEL2_RST, HIGH); // 外部LCDのRST解除 | |
m5lcd.init(); | |
SD.begin(25, SPI, 25000000); | |
} | |
void drawJpeg(String fileName){ | |
File file = SD.open(fileName, "r"); | |
file.read(buf, 50*1024); | |
file.close(); | |
m5lcd.drawJpg(buf,50*1024,0,0); | |
} | |
void loop(){ | |
drawJpeg("/test_1.jpg"); | |
delay(2000); | |
drawJpeg("/test_2.jpg"); | |
delay(2000); | |
} |
//SCK(SCLK):G23/SDA(MOSI):G33/RES(RESET):G19/DC:G22 | |
#ifndef LGFX_ST7789_H_ | |
#define LGXF_ST7789_H_ | |
#include <M5Unified.h> | |
#include <M5GFX.h> | |
#include <lgfx/v1/panel/Panel_ST7789.hpp> | |
class LGFX_ST7789 : public lgfx::LGFX_Device | |
{ | |
lgfx::Panel_ST7789 _panel_instance; | |
lgfx::Bus_SPI _bus_instance; // SPIバスのインスタンス | |
public: | |
LGFX_ST7789(void) | |
{ | |
{ // バス制御の設定を行います。 | |
auto cfg = _bus_instance.config(); // バス設定用の構造体を取得します。 | |
cfg.spi_host = VSPI_HOST; // 使用するSPIを選択 ESP32-S2,C3 : SPI2_HOST or SPI3_HOST / ESP32 : VSPI_HOST or HSPI_HOST | |
// ※ ESP-IDFバージョンアップに伴い、VSPI_HOST , HSPI_HOSTの記述は非推奨になるため、エラーが出る場合は代わりにSPI2_HOST , SPI3_HOSTを使用 | |
cfg.spi_mode = 0; // SPI通信モードを設定 (0 ~ 3) | |
cfg.freq_write = 40000000; // 送信時のSPIクロック (最大80MHz, 80MHzを整数で割った値に丸められます) | |
cfg.freq_read = 20000000; // 受信時のSPIクロック | |
cfg.spi_3wire = true; // 受信をMOSIピンで行う場合はtrueを設定 | |
cfg.use_lock = true; // トランザクションロックを使用する場合はtrueを設定 | |
cfg.dma_channel = 1; // 使用するDMAチャンネルを設定 (0=DMA不使用 / 1=1ch / 2=ch / SPI_DMA_CH_AUTO=自動設定) | |
cfg.pin_sclk = 23; // SPIのSCLKピン番号を設定 | |
cfg.pin_mosi = 33; // SPIのMOSIピン番号を設定 | |
cfg.pin_miso = 21; // SPIのMISOピン番号を設定 (-1 = disable)SDと共有 | |
cfg.pin_dc = 22; // SPIのD/Cピン番号を設定 (-1 = disable) | |
_bus_instance.config(cfg); // 設定値をバスに反映します。 | |
_panel_instance.setBus(&_bus_instance); // バスをパネルにセットします。 | |
} | |
{ // 表示パネル制御の設定を行います。 | |
auto cfg = _panel_instance.config(); // 表示パネル設定用の構造体を取得します。 | |
cfg.pin_cs = -1; // CSが接続されているピン番号 (-1 = disable) | |
cfg.pin_rst = -1; //SDと合わせるため、手動制御// RSTが接続されているピン番号 (-1 = disable) | |
cfg.pin_busy = -1; // BUSYが接続されているピン番号 (-1 = disable) | |
// ※ 以下の設定値はパネル毎に一般的な初期値が設定されていますので、不明な項目はコメントアウトして試してみてください。 | |
cfg.memory_width = 240; // ドライバICがサポートしている最大の幅 | |
cfg.memory_height = 320; // ドライバICがサポートしている最大の高さ | |
cfg.panel_width = 240; // 実際に表示可能な幅 | |
cfg.panel_height = 240; // 実際に表示可能な高さ | |
cfg.offset_x = 0; // パネルのX方向オフセット量 | |
cfg.offset_y = 0; // パネルのY方向オフセット量 | |
cfg.offset_rotation = 0; // 回転方向の値のオフセット 0~7 (4~7は上下反転) | |
cfg.dummy_read_pixel = 8; // ピクセル読出し前のダミーリードのビット数 | |
cfg.dummy_read_bits = 1; // ピクセル以外のデータ読出し前のダミーリードのビット数 | |
cfg.readable = false; // データ読出しが可能な場合 trueに設定 | |
cfg.invert = true; // パネルの明暗が反転してしまう場合 trueに設定 | |
cfg.rgb_order = false; // パネルの赤と青が入れ替わってしまう場合 trueに設定 | |
cfg.dlen_16bit = false; // データ長を16bit単位で送信するパネルの場合 trueに設定 | |
cfg.bus_shared = true; // SDカードとバスを共有している場合 trueに設定(drawJpgFile等でバス制御を行います) | |
_panel_instance.config(cfg); | |
} | |
setPanel(&_panel_instance); // 使用するパネルをセットします。 | |
} | |
}; | |
extern LGFX_ST7789 m5lcd; | |
#endif |
EXT LCD
DC :22 RES :19 SDA :33 SCK :23
SD Card
MOSI(SDA):33 MISO:21 SCK :23 CS :25