電子工作 
正面

後ろ(Xiaoは別売りです)

動いた!
Xiao Round DisplayをLovyanGFXで描画する
Arduino LovyanGFX
Seeed StudioのXiaoマイコン用円形ディスプレイを研究室から強奪手に入れたので、使い方をメモしておきます。
マイコンは、とりあえずSeeed Xiao ESP32S3を使用。
外観


LCDの他にSDカードスロットとRTC、リポバッテリー用のコネクタがあるっぽい?
LovyanGFXで表示
M5Stack系でよくM5Unifiedを使うので、使い慣れたLovyanGFXで表示してみます。
ディスプレイ定義は以下のような感じで動くはずです:
#include <LovyanGFX.h>
class LGFX_RoundDisplay : public lgfx::LGFX_Device {
private:
lgfx::Panel_GC9A01 _panel;
lgfx::Bus_SPI _bus;
public:
LGFX_RoundDisplay() {
{
auto cfg = _bus.config();
// Seeed Studio Round Display for XIAO
// LCD SPI: XIAO のハードウェア SPI を使用
cfg.spi_host = SPI2_HOST;
cfg.spi_mode = 0;
cfg.freq_write = 40000000; // 40 MHz
cfg.freq_read = 16000000;
cfg.spi_3wire = true;
cfg.use_lock = true;
cfg.dma_channel = SPI_DMA_CH_AUTO;
cfg.pin_sclk = D8;
cfg.pin_mosi = D10;
cfg.pin_miso = -1;
cfg.pin_dc = D3;
_bus.config(cfg);
_panel.setBus(&_bus);
}
{
auto cfg = _panel.config();
cfg.pin_cs = D1;
cfg.pin_rst = -1;
cfg.pin_busy = -1;
cfg.panel_width = 240;
cfg.panel_height = 240;
cfg.memory_width = 240;
cfg.memory_height = 240;
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 = true;
cfg.rgb_order = false;
cfg.dlen_16bit = false;
cfg.bus_shared = false;
_panel.config(cfg);
}
setPanel(&_panel);
}
};
Arduino IDEで、実際に何か表示してみます:
constexpr uint8_t LCD_BL = D6; // バックライト制御用ピン
LGFX_RoundDisplay display;
void setup() {
pinMode(LCD_BL, OUTPUT);
digitalWrite(LCD_BL, HIGH);
display.init();
display.setRotation(1);
display.setBrightness(255);
display.fillScreen(TFT_BLACK);
display.setTextColor(TFT_WHITE);
display.setFont(&fonts::Font4);
display.setCursor(0, 0);
display.println("Hello, World!");
}
void loop() {
delay(10000);
}

さて、何作ろうかな〜〜……