Arduino入門

2. デバイス&サンプル

5. 拡張モジュール&サンプル

アクセサリー

6. アプリケーション

Unit LCD Arduino チュートリアル

1. 準備

  • 環境設定:Arduino IDE はじめにガイドを参照して IDE のインストールを完了し、使用する開発ボードに対応するボードパッケージと必要なドライバライブラリをインストールしてください。
  • 使用するドライバライブラリ:
  • M5UnitLCD は M5GFX に含まれているため、個別にインストールする必要はありません。
  • 使用するハードウェア製品:

2. 注意事項

ピン互換性
ホストデバイスごとにピン構成が異なるため、M5Stack はピン互換性表を提供しています。実際のピン接続を確認し、必要に応じてサンプルプログラムを変更してください。

3. サンプルプログラム

  • このチュートリアルでは、CoreS3 をホストデバイスとして Unit LCD を使用します。サンプルは M5Unified の一般的なグラフィックス描画方法を参考にし、draw_function(LovyanGFX* gfx) を使用して Unit LCD にランダムな円と四角形を描画します。Unit LCD は I2C 通信を使用し、デフォルトアドレスは 0x3E、通信周波数は 400 kHz です。CoreS3 の Port A に接続した場合、対応するピンは G2 (SDA) と G1 (SCL) です。
cpp
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 <M5Unified.h>
#include <M5UnitLCD.h>

M5UnitLCD unit_lcd;
M5Canvas lcd_canvas(&unit_lcd);

void draw_function(LovyanGFX* gfx)
{
    int x      = rand() % gfx->width();
    int y      = rand() % gfx->height();
    int r      = (gfx->width() >> 4) + 2;
    uint16_t c = rand();
    gfx->fillRect(x - r, y - r, r * 2, r * 2, c);
}

void setup()
{
    auto cfg = M5.config();
    M5.begin(cfg);
    const int sda = M5.getPin(m5::pin_name_t::port_a_sda);
    const int scl = M5.getPin(m5::pin_name_t::port_a_scl);
    if (!unit_lcd.init(sda, scl, 400000)) {
        M5.Display.fillScreen(TFT_RED);
        M5.Display.setTextSize(2);
        M5.Display.setCursor(12, 32);
        M5.Display.println("Unit LCD init failed");
        while (true) {
            delay(1000);
        }
    }

    unit_lcd.setRotation(3);
    lcd_canvas.setColorDepth(16);
    lcd_canvas.createSprite(unit_lcd.width(), unit_lcd.height());
    lcd_canvas.fillScreen(TFT_BLACK);
    int textsize = lcd_canvas.height() / 60;
    if (textsize == 0) {
        textsize = 1;
    }
    lcd_canvas.setTextSize(textsize);
}

void loop()
{
    int x      = rand() % lcd_canvas.width();
    int y      = rand() % lcd_canvas.height();
    int r      = (lcd_canvas.width() >> 4) + 2;
    uint16_t c = rand();
    lcd_canvas.fillCircle(x, y, r, c);
    draw_function(&lcd_canvas);
    lcd_canvas.pushSprite(0, 0);
    unit_lcd.waitDisplay();
    delay(50);
}

4. プログラムのコンパイルと書き込み

  • 上記のサンプルプログラムをプロジェクトのコード欄にコピーして貼り付け、デバイスのポートを選択します(詳細はプログラムのコンパイルと書き込みを参照してください)。Arduino IDE の左上にあるコンパイルと書き込みボタンをクリックし、プログラムのコンパイルとデバイスへの書き込みが完了するまで待ちます。

5. ランダムグラフィックス表示

  • プログラムを起動すると、CoreS3 は Unit LCD のキャンバス上にランダムな円と四角形を継続的に重ねて描画します。
Page Tools
PDF
On This Page