【M5stack-core2】ディスプレイの使い方

タッチパネル搭載のM5stack core2。Arduinoを使ったディスプレイの使い方及び使える関数を紹介します。

全てのソースコードを見たい方は公式のgithubページをご覧ください。

関数一覧

M5.lcd.setBrightness(uint8_t brightness);
M5.Lcd.drawPixel(int16_t x, int16_t y, uint16_t color);
M5.Lcd.drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
M5.Lcd.fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
M5.Lcd.fillScreen(uint16_t color);
M5.Lcd.drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
M5.Lcd.drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,uint16_t color);
M5.Lcd.fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
M5.Lcd.fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,int16_t delta, uint16_t color);
M5.Lcd.drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
M5.Lcd.fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
M5.Lcd.drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
M5.Lcd.fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
M5.Lcd.drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color);
M5.Lcd.drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, int16_t h),
M5.Lcd.drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size);
M5.Lcd.setCursor(uint16_t x0, uint16_t y0);
M5.Lcd.setTextColor(uint16_t color);
M5.Lcd.setTextColor(uint16_t color, uint16_t backgroundcolor);
M5.Lcd.setTextSize(uint8_t size);
M5.Lcd.setTextWrap(boolean w);
M5.Lcd.printf();
M5.Lcd.print();
M5.Lcd.println();
M5.Lcd.drawCentreString(const char *string, int dX, int poY, int font);
M5.Lcd.drawRightString(const char *string, int dX, int poY, int font);
M5.Lcd.drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x, uint16_t y);
M5.Lcd.drawJpgFile(fs::FS &fs, const char *path, uint16_t x, uint16_t y);
M5.Lcd.drawBmpFile(fs::FS &fs, const char *path, uint16_t x, uint16_t y);

全ての詳細な使い方の記述はしません。基本的によく使うような関数とその結果を紹介します。

clear(画面消去)

M5.Lcd.clear(color);
で画面全体を消去した後にcolorで塗りつぶせます。
使える色はRGB値で指定できますが、In_eSPI.hで定義されている各種色を入力しても指定できます。
https://github.com/m5stack/M5Core2/blob/master/src/utility/In_eSPI.h

setBrightness(明るさ調整)

M5.Lcd.setBrightness(255);
明るさを256段階で調節できます。特にディスプレイの消費電力が多いので、これを低くすると長持ちします。

fillScreen(全画面塗り)

M5.Lcd.fillScreen(color);
で全画面を塗りつぶせます。
サンプルプログラム↓

#include <M5Core2.h>

void setup() {
  M5.begin(true, true, true, true);
  Serial.begin(115200);
  Serial.println("end setup");
  delay(1000);
}

void loop() {
  M5.Lcd.fillScreen(GREEN);
  delay(1000);
  M5.Lcd.fillScreen(RED);
  delay(1000);
  M5.Lcd.fillScreen(BLUE);
  delay(1000);
  M5.Lcd.fillScreen(WHITE);
  delay(1000);
  M5.Lcd.fillScreen(0x268785);
  delay(1000);
  Serial.println("hoge");
}

printf(文字入力)

M5.Lcd.printf(文字列)
で文字を入力できます。ただ入力開始場所(カーソル)を最初に指定しないといけません。

M5core2ならではの、タッチした場所に文字を置くプログラムを作ってみたので参考にしてください↓

#include <M5Core2.h>
#include <Fonts/EVA_20px.h>

void placeString(short int X, short int Y, char *string){
  M5.Lcd.setCursor(X, Y);
  M5.Lcd.printf(string);
}
void setup() {
  M5.begin(true, true, true, true);
  Serial.begin(115200);
  M5.Lcd.fillScreen(WHITE);
  M5.Lcd.setTextColor(BLACK);
  M5.Lcd.setTextSize(2);
  delay(1000);
  M5.Lcd.clear(WHITE);
  Serial.println("end setup");
}

void loop() {
    TouchPoint_t pos= M5.Touch.getPressPoint();//タッチ座標を取得
    if(pos.y > 0 && pos.x > 0){//タッチされていないときは-1になっているので除外
      placeString(pos.x,pos.y,"wak-tech");//タッチ位置に文字を描画
      delay(100);
    }
    if(pos.y > 240){
      if(pos.x > 218){//一番右下のボタンが押された時
        M5.Lcd.clear(WHITE);
      }
    }
    delay(10);
}

setTextSize(文字の大きさ)

M5.Lcd.setTextSize(255);
のように文字の大きさを決定できます。この関数が動いた後に描画される文字は、この大きさになります。

こちらも256段階(0~255)です。

setTextColor(文字の色)

M5.Lcd.setTextColor(color,backgroundcolor);
で色と背景色を指定できます。例えば文字色が青で背景を赤にしたい場合は
M5.Lcd.setTextColor(BLUE,RED);もしくはM5.Lcd.setTextColor(0x0000FF,0xFF0000);で指定可能です。

背景色がいらない場合はM5.Lcd.setTextColor(BLUE);のように文字色だけ指定しても動きます。

まとめ

LCDの使い方自体は分かりやすいAPIのおかげで簡単ですね。基本M5stackと同じ関数群なので、過去の情報も参考にしてみてください。

他のM5stack core2の基本的な使い方はこちら

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Exit mobile version