0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5Stack  文字表示の位置を固定

Last updated at Posted at 2022-12-04

概要

M5stackでディスプレイ上の文字表示の位置を固定したい!
この記事では、setCursor()関数を使って文字表示位置を指定する方法を解説します。

関数setCursor()

M5stackでディスプレイに文字を表示したいとき、M5.Lcd.print()を使います。
M5.Lcd.print()は座標が指定できないので、文字表示の位置を固定したい場合、あらかじめカーソルをセットしましょう。
カーソル位置を指定する必要があります。

そのために使う関数が、M5.Lcd.setCursor(x, y, font)
です。(fontは省略可)

setCursor()の使い方

以下のコードでは、"test"という文字を座標(x,y) = (0,30)の位置に表示させています。

#include <M5Core2.h>

void setup() {
  M5.begin();
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.print("test");
}

void loop() {
}

ポイント

  • 座標(x, y)の単位はピクセルで、(0, 0)はディスプレイの左上を指します。

setCursor()はどんなとき便利?

setCursor()が特に便利なのは、 センサーの値を連続して取得し、それをディスプレイに表示する場合です。
センサーの値を連続して取得するとき、M5.Lcd.print()は座標が指定できないので、いずれ新しく取得した値がディスプレイに表示できなくなります。
そんなとき、setCursor()を使いましょう。

以下のコードでは、sensor1,sensor2,sensor3にセンサーの値が次々格納されていく,と仮定しています。

void loop() {
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.printf("sensor1, %d",sensor1);
  
  M5.Lcd.setCursor(0, 40);
  M5.Lcd.printf("sensor1, %d",sensor1);
  
  M5.Lcd.setCursor(0, 50);
  M5.Lcd.printf("sensor1, %d",sensor1);
}

このように書くと、sensor1,sensor2,sensor3の値が同じ位置に表示され便利です。

ポイント

M5.Lcd.print("sensor1, %d",sensor1);

の%dはフォーマット指定子といって、sensor1int型であることを示しています。

フォーマット指定子の例

フォーマット指定子 意味
%d 整数 (int) 123
%f 浮動小数点 (float) 123.45
%s 文字列 (string) "Hello"

詳しいフォーマット指定子の使い方はこちらを参考にしてください。

参考にしたページ

・M5stackドキュメンテーション
https://docs.m5stack.com/en/api/core2/lcd_api

・フォーマット指定子について
https://kurobekoblog.com/arduino_sprint

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?