pdf-icon

Arduino入門

2. デバイス&サンプル

M5GFX Setup

M5GFX は、M5Stack製品でディスプレイデバイスの操作を行うためのライブラリです。ユーザーは本ライブラリのAPIを呼び出して、さまざまな表示効果やタッチ操作効果などを実現できます。

ヘッダファイルのインクルードとディスプレイ定義

各デバイスごとにインクルードするファイルが異なります。M5Stackデバイスで主に使用するヘッダファイルは M5GFX.h です。他のデバイス(例:Unit LCD)は M5UnitLCD.h を使用し、Unit OLED や Atom Display も同様です。

M5GFX.h

対応デバイス:

M5Stack コントローラー,例:M5Fire、M5Core2、M5Tough、M5StickC、M5Paper、M5Tab など。

コンストラクタ

コンストラクタのプロトタイプ:

M5GFX(void)

機能説明:

  • M5GFX オブジェクトを作成し、デフォルトで現在のデバイスを指します

サンプルプログラム:

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <M5GFX.h>

M5GFX display;

void setup() {
    display.begin();
    uint16_t x = display.width() / 2;
    uint16_t y = display.height() / 2;

    display.drawCenterString("M5Stack", x, y);
}

void loop() {
}

M5UnitLCD.h

対応デバイス:

M5Stack Unit LCD

コンストラクタ

コンストラクタのプロトタイプ:

M5UnitLCD( uint8_t pin_sda = M5UNITLCD_SDA, uint8_t pin_scl = M5UNITLCD_SCL, uint32_t i2c_freq = M5UNITLCD_FREQ, 
           int8_t i2c_port = -1, uint8_t i2c_addr = 0x3E )

機能説明:

  • M5UnitLCD オブジェクトを作成し、I2C パラメータを設定します

引数:

  • pin_sda:デバイスLCDのSDAピン番号
  • pin_scl:デバイスLCDのSCLピン番号
  • i2c_freq:I2C通信周波数
  • i2c_port:I2Cポート(通常は使用しません)
  • i2c_addr:I2Cアドレス(通常は使用しません)
説明
M5StickC/Plus/Atom のコントローラデバイスについては、i2c_port および i2c_addr は引数を渡さなくても自動的に PORT.A および 0x3E に設定されます。

関数

init

関数原型:

void init( uint8_t pin_sda, uint8_t pin_scl, uint32_t i2c_freq = M5UNITLCD_FREQ, int8_t i2c_port = -1, uint8_t i2c_addr = 0x3E )

機能説明:

  • 初期化設定

引数:

  • pin_sda:デバイスLCDのSDAピン番号
  • pin_scl:デバイスLCDのSCLピン番号
  • i2c_freq:I2C通信周波数
  • i2c_port:I2Cポート(通常は使用しません)
  • i2c_addr:I2Cアドレス(通常は使用しません)

setup

関数原型:

setup(uint8_t pin_sda = M5UNITLCD_SDA, uint8_t pin_scl = M5UNITLCD_SCL, uint32_t i2c_freq = M5UNITLCD_FREQ, 
      int8_t i2c_port = -1, uint8_t i2c_addr = 0x3E)

機能説明:

  • 初期設定を変更

引数:

  • pin_sda:デバイスLCDのSDAピン番号
  • pin_scl:デバイスLCDのSCLピン番号
  • i2c_freq:I2C通信周波数
  • i2c_port:I2Cポート(通常は使用しません)
  • i2c_addr:I2Cアドレス(通常は使用しません)

サンプルプログラム:

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <M5UnitLCD.h>
M5UnitLCD display;

void setup() {
    display.init( 21, 22, 400000 );
    display.setup( 21, 22, 400000 );
    uint16_t x = display.width() / 2;
    uint16_t y = display.height() / 2;

    display.drawCenterString("M5Stack", x, y);
}

void loop() {
}

M5UnitOLED.h

対応デバイス:

M5Stack Unit OLED

コンストラクタ

コンストラクタのプロトタイプ:

M5UnitOLED( uint8_t pin_sda = M5UNITOLED_SDA, uint8_t pin_scl = M5UNITOLED_SCL, uint32_t i2c_freq = M5UNITOLED_FREQ, 
            int8_t i2c_port = -1, uint8_t i2c_addr = 0x3C)

機能説明:

  • 创建 M5UnitOLED 对象并设置 I2C 参数

引数:

  • pin_sda:デバイスOLEDのSDAピン番号
  • pin_scl:デバイスOLEDのSCLピン番号
  • i2c_freq:I2C通信周波数
  • i2c_port:I2Cポート(通常は使用しません)
  • i2c_addr:I2Cアドレス(通常は使用しません)
説明
M5StickC/Plus/Atom のコントローラデバイスについては、i2c_port および i2c_addr は引数を渡さなくても自動的に PORT.A および 0x3C に設定されます。

関数

init

関数原型:

void init( uint8_t pin_sda, uint8_t pin_scl, uint32_t i2c_freq = M5UNITOLED_FREQ, int8_t i2c_port = -1, uint8_t i2c_addr = 0x3C )

機能説明:

  • 初期化設定

引数:

  • pin_sda:デバイスLCDのSDAピン番号
  • pin_scl:デバイスLCDのSCLピン番号
  • i2c_freq:I2C通信周波数
  • i2c_port:I2Cポート(通常は使用しません)
  • i2c_addr:I2Cアドレス(通常は使用しません)

setup

関数原型:

setup(uint8_t pin_sda = M5UNITLCD_SDA, uint8_t pin_scl = M5UNITLCD_SCL, uint32_t i2c_freq = M5UNITLCD_FREQ, 
      int8_t i2c_port = -1, uint8_t i2c_addr = 0x3C)

機能説明:

  • 初期設定を変更

引数:

  • pin_sda:デバイスLCDのSDAピン番号
  • pin_scl:デバイスLCDのSCLピン番号
  • i2c_freq:I2C通信周波数
  • i2c_port:I2Cポート(通常は使用しません)
  • i2c_addr:I2Cアドレス(通常は使用しません)

サンプルプログラム:

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <M5UnitOLED.h>
M5UnitOLED display;

void setup() {
    display.init( 21, 22, 400000 );
    display.setup( 21, 22, 400000 );
    uint16_t x = display.width() / 2;
    uint16_t y = display.height() / 2;

    display.drawCenterString("M5Stack", x, y);
}

void loop() {
}

M5AtomDisplay.h

対応デバイス:

M5Stack Atom DisplayAtomDisplayLite

コンストラクタ

コンストラクタのプロトタイプ:

M5AtomDisplay( unit16_t logical_width = 1280, uint16_t logical_height = 720, float refresh_rate = 0.0f, uint16_t output_width = 0, uint16_t output_height = 0, 
               uint_fast8_t scale_w = 0, uint_fast8_t scale_h = 0, uint32_t pixel_clock = 74250000)

機能説明:

  • M5AtomDisplay オブジェクトを作成し、I2C パラメータを設定します

引数:

  • logical_width:論理幅
  • logical_height:論理高さ
  • refresh_rate:リフレッシュレート
  • output_width:出力幅
  • output_height:出力高さ
  • scale_w:スケール幅
  • scale_h:スケール高さ
  • pixel_clock:ピクセルクロック周波数
説明
1. 最大解像度は利用可能なメモリに依存します
2. 指定可能なリフレッシュレートは使用するディスプレイによって異なります
解像度の使用例:
1280 x 720 x 60Hz
1920 x 1080 x 24Hz
320 x 240 x 240Hz

関数

setResolution

関数原型:

bool setResolution(uint16_t logical_width = 0, uint16_t logical_height = 0, float refresh_rate = 0.0f, uint16_t output_width = 0, uint16_t output_height = 0, 
                   uint_fast8_t scale_w = 0, uint_fast8_t scale_h = 0, uint32_t pixel_clock = 74250000)

機能説明:

  • 初期解像度設定を変更

引数:

  • logical_width:論理幅
  • logical_height:論理高さ
  • refresh_rate:リフレッシュレート
  • output_width:出力幅
  • output_height:出力高さ
  • scale_w:スケール幅
  • scale_h:スケール高さ
  • pixel_clock:ピクセルクロック周波数

サンプルプログラム:

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13
#include <M5AtomDisplay.h>
M5AtomDisplay display( 640, 480, 60 );

void setup() {
    display.setResolution( 320, 240, 60 );
    uint16_t x = display.width() / 2;
    uint16_t y = display.height() / 2;

    display.drawCenterString("M5Stack", x, y);
}

void loop() {
}

追加ヘッダファイルが必要なAPIリスト

M5GFX の一部のAPIを使用する際は、M5GFX.h(またはM5UnitLCD.h、M5UnitOLED.h、M5AtomDisplay.h)に加えて、必ず他の対応するヘッダファイルもインクルードする必要があります。そうしないと正常に呼び出すことができません。
該当APIおよびヘッダファイルは以下の表の通りです:

API 必要なヘッダファイル
drawBmpFile SD.h or SPIFFS.h
drawJpgFile SD.h or SPIFFS.h
drawPngFile SD.h or SPIFFS.h
drawQoiFile SD.h or SPIFFS.h
drawBmpUrl HTTPClient.h
drawJpgUrl HTTPClient.h
drawPngUrl HTTPClient.h
drawQoiUrl HTTPClient.h
説明
1. 必ず M5GFX.h(または M5UnitLCD.h、M5UnitOLED.h、M5AtomDisplay.h)より前に、対応するヘッダファイルをインクルードしてください。
2.画像データの保存場所が外部ストレージカードか内部メモリかによって、 SD.h または SPIFFS.h のヘッダファイルを使い分けてください。
On This Page