先日、LCD Unitのファームウェアをアップデートしましたが実際に使用していなかったので、M5StickC Plus2に接続して表示させてみました
基本的にはサンプルデザインを流用して記述しました。サンプル記述では、メッセージ表示後に丸と四角のランダムパターンを表示します
// #include <M5StickCPlus2.h>
// #include <M5GFX.h>
#include <Arduino.h>
#include <M5UnitLCD.h>
#include <M5Unified.h>
void setup(void) {
auto cfg = M5.config();
// M5 UnitLCD display setting.
// cfg.external_display.unit_lcd = true;
#if defined(__M5GFX_M5UNITLCD__) // setting for Unit LCD.
cfg.unit_lcd.pin_sda = GPIO_NUM_32; // Grove I2C SDA pin
cfg.unit_lcd.pin_scl = GPIO_NUM_33; // Grove I2C SCL pin
cfg.unit_lcd.i2c_addr = 0x3E; // I2C Adress
cfg.unit_lcd.i2c_freq = 400000;
cfg.unit_lcd.i2c_port = I2C_NUM_0;
#endif
M5.begin(cfg);
// Get the number of available displays
int display_count = M5.getDisplayCount();
for (int i = 0; i < display_count; ++i) {
M5.Displays(i).setRotation(3);
int textsize = M5.Displays(i).height() / 60;
if (textsize == 0) { textsize = 1; }
M5.Displays(i).setTextSize(textsize);
Serial.printf("No.%d\n", i);
M5.Displays(i).printf("No.%d\n", i);
}
// If an external display is to be used as the main display, it can be listed in order of priority.
// M5.setPrimaryDisplayType( m5::board_t::board_M5UnitLCD );
M5.Display.print("primary display\n");
int index_unit_lcd = M5.getDisplayIndex(m5::board_t::board_M5UnitLCD);
M5.Displays(index_unit_lcd).print("This is M5 UnitLCD display\n");
M5.delay(10000);
}
// When creating a function for drawing, it can be used universally by accepting a LovyanGFX type as an argument.
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 loop(void) {
M5.delay(1);
for (int i = 0; i < M5.getDisplayCount(); ++i) {
int x = rand() % M5.Displays(i).width();
int y = rand() % M5.Displays(i).height();
int r = (M5.Displays(i).width() >> 4) + 2;
uint16_t c = rand();
M5.Displays(i).fillCircle(x, y, r, c);
}
for (int i = 0; i < M5.getDisplayCount(); ++i) {
draw_function(&M5.Displays(i));
}
}
なお、#include <Arduino.h>を宣言していないと、上記記述の14行目~17行名で構造体 config_tにunit_lcdが無いといった趣旨のエラーが発生します。勉強不足で、嵌まってしましいましたよ。
参考にさせて頂きましたサイト:
- J.Hokenのブログ様の「共通ライブラリM5UnifiedとColor LCDユニット」
- M5STACK Githubのサンプルデザイン
0 件のコメント:
コメントを投稿