TF-SSD1322-ESP32C3 (copy) — Dfrobot Firebeetle2 Esp32S3 simulation

An interactive Dfrobot Firebeetle2 Esp32S3 circuit simulation you can run free in your browser on Velxio, by wsss.

Components

Sketch code

// ============================================================================
// Sprite 颜色诊断
// 期望:上半部 红-绿-蓝;下半部 深灰-灰-白(分上下两块)
// 上半部由 tft 直接绘制
// 下半部由 sprite 绘制
// 对比两者颜色即可判断 sprite 是否有问题
// ============================================================================
#include <LovyanGFX.hpp>

class LGFX : public lgfx::LGFX_Device {
  lgfx::Panel_ILI9341 _panel_instance;
  lgfx::Bus_SPI       _bus_instance;
public:
  LGFX() {
    {
      auto cfg = _bus_instance.config();
      cfg.spi_host    = SPI3_HOST;
      cfg.spi_mode    = 0;
      cfg.freq_write  = 20000000;
      cfg.freq_read   = 10000000;
      cfg.spi_3wire   = false;
      cfg.use_lock    = true;
      cfg.dma_channel = 0;
      cfg.pin_sclk = 12;
      cfg.pin_mosi = 11;
      cfg.pin_miso = 38;
      cfg.pin_dc   = 9;
      _bus_instance.config(cfg);
      _panel_instance.setBus(&_bus_instance);
    }
    {
      auto cfg = _panel_instance.config();
      cfg.pin_cs           = 10;
      cfg.pin_rst          = 8;
      cfg.pin_busy         = -1;
      cfg.panel_width      = 240;
      cfg.panel_height     = 320;
      cfg.offset_x         = 0;
      cfg.offset_y         = 0;
      cfg.offset_rotation  = 0;
      cfg.dummy_read_pixel = 8;
      cfg.dummy_read_bits  = 1;
      cfg.readable         = false;
      cfg.invert           = false;
      cfg.rgb_order        = false;
      cfg.dlen_16bit       = false;
      cfg.bus_shared       = false;
      _panel_instance.config(cfg);
    }
    setPanel(&_panel_instance);
  }
};

LGFX        tft;
LGFX_Sprite canvas(&tft);

void setup() {
  Serial.begin(115200);
  tft.init();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);

  // ---- 上半部:tft 直接绘制 ----
  tft.fillRect(  0,   0,  80, 60, 0xF800);   // 红
  tft.fillRect( 80,   0,  80, 60, 0x07E0);   // 绿
  tft.fillRect(160,   0,  80, 60, 0x001F);   // 蓝

  // ---- 中半部:sprite 绘制 ----
  canvas.setColorDepth(16);
  canvas.createSprite(240, 60);
  canvas.fillSprite(TFT_BLACK);
  canvas.fillRect(  0,   0,  80, 60, 0xF800);   // 红
  canvas.fillRect( 80,   0,  80, 60, 0x07E0);   // 绿
  canvas.fillRect(160,   0,  80, 60, 0x001F);   // 蓝
  canvas.pushSprite(0, 60);

  // ---- 下半部:sprite 绘制灰色 ----
  canvas.fillSprite(TFT_BLACK);
  canvas.fillRect(  0,   0,  80, 60, 0x3186);   // 深灰
  canvas.fillRect( 80,   0,  80, 60, 0x632C);   // 中灰
  canvas.fillRect(160,   0,  80, 60, 0xFFFF);   // 白
  canvas.pushSprite(0, 120);

  Serial.println("Compare 3 bands: direct / sprite-RGB / sprite-gray");
}

void loop() {
  delay(1000);
}

More projects by wsss