# LCD 画面表示
スクリーンの解像度は 横320 x 高さ240 で、左上が原点(0, 0)です。
色コードはあらかじめ定義があり、これらを利用することができます。
| 色定義 | 中身 | 説明 | R | G | B |
| --- | --- | -- | -- | -- | -- |
|TFT_BLACK | 0x0000 |黒 | 0| 0| 0 |
|TFT_NAVY | 0x000F |ネイビー | 0| 0| 128 |
|TFT_DARKGREEN | 0x03E0 |濃い緑 | 0| 128| 0 |
|TFT_MAROON | 0x7800 |マロン | 128| 0| 0 |
|TFT_PURPLE | 0x780F |パープル | 128| 0| 128 |
|TFT_OLIVE | 0x7BE0 |オリーブ | 128| 128| 0 |
|TFT_LIGHTGREY | 0xC618 |薄い灰色 | 192| 192| 192 |
|TFT_DARKGREY | 0x7BEF |濃い灰色 | 128| 128| 128 |
|TFT_BLUE | 0x001F |青 | 0| 0| 255 |
|TFT_GREENYELLOW| 0xB7E0 |黄緑 | 180| 255| 0 |
|TFT_GREEN | 0x07E0 |緑 | 0| 255| 0 |
|TFT_YELLOW | 0xFFE0 |黄色 | 255| 255| 0 |
|TFT_ORANGE | 0xFDA0 |オレンジ | 255| 180| 0 |
|TFT_PINK | 0xFC9F |ピンク |255 | 255| 16 |
|TFT_CYAN | 0x07FF |シアン | 0| 255| 255 |
|TFT_DARKCYAN | 0x03EF |濃いシアン | 0| 128| 128 |
|TFT_RED | 0xF800 |赤 | 255| 0| 0 |
|TFT_MAGENTA | 0xF81F |マゼンダ | 255| 0| 255 |
|TFT_WHITE | 0xFFFF |白 | 255| 255| 255 |
## begin()
**機能:**
使用できるように初期化を行います。
**構文:**
begin();
**引数:**
なし
**戻り値:**
なし
**情報:**
1)M5.begin( )でLCDの初期化を行わない場合は、ディスプレイを使う前にこの関数を呼んでください。
## sleep()
**機能:**
ディスプレイを省エネモードに移行させます
**構文:**
sleep();
**引数:**
なし
**戻り値:**
なし
**情報:**
1)スリープを解除するには、wakeup()関数を呼んでください。
2)M5StackのLCDバックライトは別に制御しているため、必要に応じてsetBrightness( )関数で調整してください。
**使用例:**
```clike
#include
M5.Lcd.sleep();
M5.Lcd.setBrightness(0);
```
## wakeup()
**機能:**
ディスプレイを省エネモードから復帰させます
**構文:**
wakeup();
**引数:**
なし
**戻り値:**
なし
**情報:**
1)M5StackのLCDバックライトは別に制御しているため、必要に応じてsetBrightness( )関数で調整してください。
**使用例:**
```clike
#include
M5.Lcd.wakeup();
M5.Lcd.setBrightness(200);
```
## setBrightness()
**機能:**
ディスプレイのバックライトを調整します。
**構文:**
setBrightness(uint8_t brightness);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| brightness | uint8_t | 明るさ(0:消灯~255:全灯) |
**戻り値:**
なし
**情報:**
1)バックライトはPWM(44.1KHz)で制御されています。
2)バックライトを多用するとバッテリー消費に直接的な影響があります。
**使用例:**
```clike
#include
M5.Lcd.setBrightness(200);
```
## progressBar()
**機能:**
進捗を表すバーを表示します。
**構文:**
progressBar(int x, int y, int w, int h, uint8_t val);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| x | int | 座標X(左上) |
| y | int | 座標Y(左上) |
| w | int | 幅 (px) |
| h | int | 高さ(px) |
| val | uint8_t | 進捗(0-100%) |
**戻り値:**
なし
**情報:**
1)色は青色(0x09F1)で表現されます。
2)追加分しか描画しないため、あらかじめ背景を消しておいてください。
**使用例:**
```clike
#include
M5.Lcd.fillRect(0,0,240,20,0);
M5.Lcd.progressBar(0,0,240,20, 20);
```
## qrcode()
**機能:**
QRコードを生成します。
**構文:**
qrcode(const char *string, uint16_t x, uint16_t y, uint8_t width, uint8_t version);
qrcode(const String &string, uint16_t x, uint16_t y, uint8_t width, uint8_t version);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| val | string / String& | QRに埋め込む文字列 |
| x | uint16_t | 座標X(左上) |
| y | uint16_t | 座標Y(左上) |
| width | uint8_t | 幅 (px) |
| version | uint8_t | QRコードバージョン |
**戻り値:**
なし
**情報:**
1)文字数に合わせて適切なQRコードバージョンを指示してください。
**使用例:**
```clike
#include
M5.Lcd.qrcode("http://www.m5stack.com",50,10,220,6);
```
## drawBitmap()
**機能:**
ビットマップを描画します。
**構文:**
drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, const uint16_t *data);
drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, uint16_t *data);
drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, const uint16_t *data, uint16_t transparent);
drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, const uint8_t *data);
drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, uint8_t *data);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| x0 | int16_t | 座標X(左上) |
| y0 | int16_t | 座標Y(左上) |
| w | int16_t | 幅 (px) |
| h | int16_t | 高さ(px) |
| data | uint16_t* / uint8_t*| 画像データ |
| transparent | uint16_t | 透明色コード |
**戻り値:**
なし
**情報:**
1)カラーコードは上位より赤5ビット、緑6ビット、青5ビットの計16ビットであらわされます。
**使用例:**
サンプルスケッチを参照:M5Stack->Advanced->drawXBitmap
## drawBmpFile()
**機能:**
ファイルからビットマップを読み込み、描画します。
**構文:**
drawBmpFile(fs::FS &fs, const char *path, uint16_t x, uint16_t y);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| fs | fs::FS | ファイルデバイス |
| path | const char * | ファイル名 |
| x | int16_t | 座標X(左上) |
| y | int16_t | 座標Y(左上) |
**戻り値:**
なし
**情報:**
1)サイズ、ビット数によっては展開できないことがあります。
**使用例:**
```clike
#include
M5.Lcd.drawBmpFile(SD, "/p2.bmp",0,0);
```
## drawJpg()
**機能:**
メモリからJPEGデータを読み込み、描画します。
**構文:**
void drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x = 0,
uint16_t y = 0, uint16_t maxWidth = 0, uint16_t maxHeight = 0,
uint16_t offX = 0, uint16_t offY = 0,
jpeg_div_t scale = JPEG_DIV_NONE);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| jpg_data |uint8_t * | 格納場所の先頭 |
| jpg_len | size_t | データ長 |
| x | uint16_t | 座標X(左上) |
| y | uint16_t | 座標Y(左上) |
|maxWidth | uint16_t | 最大幅 (px) |
|maxHeight | uint16_t | 最大高さ (px) |
| offX | uint16_t |オフセットX (px) |
| offY | uint16_t | オフセットY (px) |
| scale | jpeg_div_t | 座標Y(左上) |
スケール(jpeg_div_t)引数:
| 名前 |説明 |
| --- | -- |
| JPEG_DIV_NONE|等倍|
| JPEG_DIV_2 |1/2|
| JPEG_DIV_4 |1/4|
| JPEG_DIV_8 |1/8|
| JPEG_DIV_MAX |最大|
**戻り値:**
なし
**情報:**
1)サイズ、ビット数、フォーマット(プログレッシブ等)によっては展開できないことがあります。
## drawJpgFile()
**機能:**
ファイルからJPEGデータを読み込み、描画します。
**構文:**
void drawJpgFile(fs::FS &fs, const char *path, uint16_t x = 0, uint16_t y = 0,
uint16_t maxWidth = 0, uint16_t maxHeight = 0,
uint16_t offX = 0, uint16_t offY = 0,
jpeg_div_t scale = JPEG_DIV_NONE);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| fs |fs::FS &| ファイルデバイス |
| path | const char * | ファイルがある場所 |
| x | uint16_t | 座標X(左上) |
| y | uint16_t | 座標Y(左上) |
|maxWidth | uint16_t | 最大幅 (px) |
|maxHeight | uint16_t | 最大高さ (px) |
| offX | uint16_t |オフセットX (px) |
| offY | uint16_t | オフセットY (px) |
| scale | jpeg_div_t |スケール |
スケール(jpeg_div_t)引数:
| 名前 |説明 |
| --- | -- |
| JPEG_DIV_NONE|等倍|
| JPEG_DIV_2 |1/2|
| JPEG_DIV_4 |1/4|
| JPEG_DIV_8 |1/8|
| JPEG_DIV_MAX |最大|
**戻り値:**
なし
**情報:**
1)サイズ、フォーマット(プログレッシブ等)によっては展開できないことがあります。
## fillScreen()
**機能:**
引数で指定した色で画面を塗りつぶします。
**構文:**
fillScreen(uint16_t color);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| color | 塗りつぶしの色 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.fillScreen(RED);
```
## setTextColor()
**機能:**
文字の色や文字の背景色を引数で指定した色に変更します。
**構文:**
setTextColor(uint16_t color, [uint16_t backgroundcolor]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| color | テキストの色 | uint16_t |
| backgroundcolor| テキストの背景色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.setTextColor(RED);
```
## setCursor()
**機能:**
カーソルの位置を設定します。
**構文:**
setCursor(uint16_t x, uint16_t y);
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x | x位置 | uint16_t |
| y | y位置 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.setCursor(100, 100);
M5.Lcd.print("Hello");
```
## setTextSize()
**機能:**
描画する文字サイズを指定します
**構文:**
setTextSize(uint8_t size);
| 引数 | 説明 | 型 |
| --- | --- | -- |
| size | 文字のサイズ(1-7) | uint8_t |
## drawPixel()
**機能:**
指定した位置に指定色のピクセルを描画します。
**構文:**
drawPixel(int16_t x, int16_t y, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x | x位置 | int16_t |
| y | y位置 | int16_t |
| color | ピクセルの色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.drawPixel(22, 22, RED);
```
## drawChar()
**機能:**
指定した始点から終点まで指定色の直線を描画します。
**構文:**
drawChar(int32_t x, int32_t y, uint16_t c, uint32_t color, uint32_t bg, uint8_t size);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| x | int32_t | 座標X(左上) |
| y | int32_t | 座標Y(左上) |
| c | uint16_t | 文字コード |
| color | uint32_t | 描画色 |
| bg | uint32_t | 背景色 |
| size | uint8_t | 文字サイズ |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.drawChar(0,0,'A',TFT_GREEN,TFT_BLACK,3);
```
## drawFastVLine()
**機能:**
XからYまで垂直に線を引きます。
**構文:**
drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color);
**引数:**
| 引数 | 型 |説明 |
| --- | --- | -- |
| x | int16_t | 始点のx位置 |
| y | int16_t | 始点のy位置 |
| h | int16_t |線の長さ |
| color | uint32_t |線の色(省略可能) |
**使用例:**
```clike
#include
M5.Lcd.drawFastHLine(0, 0, 12, TFT_GREEN);
```
## drawFastVLine()
**機能:**
XからYまで水平に線を引きます。
**構文:**
drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color);
**引数:**
| 引数 | 型 |説明 |
| --- | --- | -- |
| x | int16_t | 始点のx位置 |
| y | int16_t | 始点のy位置 |
| w | int16_t |線の長さ |
| color | uint32_t |線の色(省略可能) |
**使用例:**
```clike
#include
M5.Lcd.drawFastHLine(0, 0, 12, TFT_GREEN);
```
## drawLine()
**機能:**
指定した始点から終点まで指定色の直線を描画します。
**構文:**
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, [uint16_t color]);
**引数:**
| 引数 | 型 |説明 |
| --- | --- | -- |
| x0 | int16_t | 始点のx位置 |
| y0 | int16_t |始点のy位置 |
| x1 | int16_t |終点のx位置 |
| y1 | int16_t |終点のy位置 |
| color | uint16_t |線の色(省略可能) |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.drawLine(0, 0, 12, 12, WHITE);
```
## drawTriangle()
**機能:**
指定した3点を結ぶ三角形を指定色で描画します。
**構文:**
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x0 | 点0のx位置 | int16_t |
| y0 | 点0のy位置 | int16_t |
| x1 | 点1のx位置 | int16_t |
| y1 | 点1のy位置 | int16_t |
| x2 | 点2のx位置 | int16_t |
| y2 | 点2のy位置 | int16_t |
| color | 線の色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.drawTriangle(22, 22, 69, 98, 51, 22, RED);
```
## fillTriangle()
**機能:**
指定した3点を結ぶ三角形を指定色で塗りつぶして描画します。
**構文:**
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x0 | 点0のx位置 | int16_t |
| y0 | 点0のy位置 | int16_t |
| x1 | 点1のx位置 | int16_t |
| y1 | 点1のy位置 | int16_t |
| x2 | 点2のx位置 | int16_t |
| y2 | 点2のy位置 | int16_t |
| color | 塗りつぶしの色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.fillTriangle(22, 22, 69, 98, 51, 22, RED);
```
## drawRect()
**機能:**
指定の点から指定の幅と高さの四角形を指定色で描画します。
**構文:**
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x | 点のx位置 | int16_t |
| y | 点のy位置 | int16_t |
| w | 四角形の幅 | int16_t |
| h | 四角形の高さ | int16_t |
| color | 線の色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.drawRect(180, 12, 122, 10, BLUE);
```
## fillRect()
**機能:**
指定の左上の点(x,y)と幅と高さの四角形を指定色で塗りつぶして描画します。
**構文:**
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x | 点のx位置 | int16_t |
| y | 点のy位置 | int16_t |
| w | 四角形の幅 | int16_t |
| h | 四角形の高さ | int16_t |
| color | 塗りつぶしの色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.fillRect(180, 12, 122, 10, BLUE);
```
## drawRoundRect()
**機能:**
左上の点(x,y)と幅と高さを指定して、かど丸の四角形を描画します。
**構文:**
drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x | 四角形の左上の頂点のx座標 | int16_t |
| y | 四角形の左上の頂点のy座標 | int16_t |
| w | 四角形の幅 | int16_t |
| h | 四角形の高さ | int16_t |
| r | コーナー半径 | int16_t |
| color | 四角形の線の色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.fillRoundRect(180, 70, 122, 10, 4, BLUE);
```
## fillRoundRect()
**機能:**
左上の点(x,y)と幅と高さを指定して、塗りつぶされた かど丸の四角形を描画します。
**構文:**
fillRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, [uint16_t color]);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x | 四角形の左上の頂点のx座標 | int16_t |
| y | 四角形の左上の頂点のy座標 | int16_t |
| w | 四角形の幅 | int16_t |
| h | 四角形の高さ | int16_t |
| r | コーナー半径 | int16_t |
| color | 四角形の線の色。省略可能。 | uint16_t |
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.fillRoundRect(180, 70, 122, 10, 4, BLUE);
```
## drawEllipse()
**機能:**
左上の点(x,y)と幅と高さを指定して、楕円を描画します。
**構文:**
drawEllipse(int16_t x0, int16_t y0, int32_t rx, int32_t ry, uint16_t color);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x0 | 楕円の中心X座標 | int16_t |
| y0 | 楕円の中心Y座標 | int16_t |
| rx | 円の横幅 | int16_t |
| ry | 円の縦幅 | int16_t |
| color | 円の色 | uint16_t |
**使用例:**
```clike
#include
M5.Lcd.drawEllipse(100,100,20,30, TFT_GREEN);
```
## fillEllipse()
**機能:**
左上の点(x,y)と幅と高さを指定して、塗りつぶされた楕円を描画します。
**構文:**
fillEllipse(int16_t x0, int16_t y0, int32_t rx, int32_t ry, uint16_t color);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| x0 | 楕円の中心X座標 | int16_t |
| y0 | 楕円の中心Y座標 | int16_t |
| rx | 円の横幅 | int16_t |
| ry | 円の縦幅 | int16_t |
| color | 円の色 | uint16_t |
**使用例:**
```clike
#include
M5.Lcd.drawEllipse(100,100,20,30, TFT_GREEN);
```
## color565()
**機能:**
関数で使用する色コード(rgb565)に変更します。
**構文:**
color565(uint8_t red, uint8_t green, uint8_t blue);
**引数:**
| 引数 | 説明 | 型 |
| --- | --- | -- |
| red | 赤 | int8_t |
| green | 緑 | int8_t |
| blue | 青 | int8_t |
**戻り値:**
なし
**使用例:**
```clike
#include
uint16_t colorvalue=0;
colorvalue=color565(255,255,255);
```
## setRotation()
**機能:**
画面を回転させます。
**構文:**
setRotation(uint8_t r);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| r | uint8_t | 回転角 r (x 90°)|
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.setRotation(1);
```
**情報:**
1)M5Stackのディスプレイ制御は90°回転された制御になっており、M5.Lcd.begin()の中で setRotation(1)が実行されています。
2)0~3 は回転、4~7 は画面反転し、回転します。
## invertDisplay()
**機能:**
画面をネガポジ反転させます。
**構文:**
invertDisplay(boolean i);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| i|boolean | 反転するなら true|
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.invertDisplay(true);
```
## loadFont()
**機能:**
独自のフォントを読み込みます
**構文:**
loadFont(String fontName, fs::FS &ffs);
**引数:**
| 引数 | 型 || 説明
| --- | --- | -- |
| fontName | String | フォントファイル名 |
| ffs | fs::FS | ファイルデバイス |
**使用例:**
```clike
#include
M5.Lcd.loadFont("filename", SD);
```
## unloadFont()
**機能:**
独自のフォントの使用を終えます
**構文:**
unloadFont();
**引数:**
なし
**使用例:**
```clike
#include
M5.Lcd.unloadFont();
```
## fontsLoaded()
**機能:**
独自のフォントを読み込んでいるかを返します
**構文:**
fontsLoaded();
**引数:**
なし
**戻り値:**
|値 |説明 |
|-- |-- |
|true |読み込み済み|
|false|未読み込み |
**使用例:**
```clike
#include
if(M5.Lcd.unloadFont()){
M5.Lcd.unloadFont();
}
```
## drawString()
**機能:**
文字を描画します。
**構文:**
drawString(const char *string, int32_t poX, int32_t poY, uint8_t font);
drawString(const char *string, int32_t poX, int32_t poY);
drawString(const String& string, int32_t poX, int32_t poY, uint8_t font);
drawString(const String& string, int32_t poX, int32_t poY);
**引数:**
| 引数 | 型 | 説明 |
| --- | --- | -- |
| poX | int32_t | 座標X(左上) |
| poY | int32_t | 座標Y(左上) |
| string | const char * / String &| 文字列 |
| font | uint8_t | 読み込んだフォントを使うなら 1 |
**戻り値:**
なし
## printf()
**機能:**
指定の文字列を描画します。
**構文:**
printf("書式指定",arg1...);
**情報:**
書式指定は通常のC言語フォーマットに沿った指定ができます。
**使用例:**
```clike
#include
int a=1;
M5.begin();
M5.Lcd.printf("A=%d",a);
```
## print()
**機能:**
指定の文字列を描画します。
**構文:**
print("表示する文字列");
**使用例:**
```clike
#include
M5.begin();
M5.Lcd.print("this is a print text function");
```
## 使用例 {docsify-ignore}
```clike
#include
M5.begin();
M5.Lcd.fillScreen(BLACK) #set the default background color
M5.Lcd.drawLine(0, 0, WHITE);
M5.Lcd.drawTriangle(22, 22, 69, 98, 51, 22, RED);
M5.Lcd.fillTriangle(122, 122, 169, 198, 151, 182, RED);
M5.Lcd.drawRect(180, 12, 122, 10, BLUE);
M5.Lcd.fillRect(180, 30, 122, 10, BLUE);
M5.Lcd.drawRoundRect(180, 50, 122, 10, 4, BLUE);
M5.Lcd.fillRoundRect(180, 70, 122, 10, 4, BLUE);
M5.Lcd.print("this is a print text function");
```