概要
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はフォーマット指定子といって、sensor1
がint型
であることを示しています。
フォーマット指定子の例
フォーマット指定子 | 意味 | 例 |
---|---|---|
%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