The screen resolution is 320x240, with the origin (0,0) at the top left corner of the screen
Color code:
Definition | Hex value | R | G | B |
---|---|---|---|---|
BLACK | 0x0000 | 0 | 0 | 0 |
NAVY | 0x000F | 0 | 0 | 128 |
DARKGREEN | 0x03E0 | 0 | 128 | 0 |
MAROON | 0x7800 | 128 | 0 | 0 |
PURPLE | 0x780F | 128 | 0 | 128 |
OLIVE | 0x7BE0 | 128 | 128 | 0 |
LIGHTGREY | 0xC618 | 192 | 192 | 192 |
DARKGREY | 0x7BEF | 128 | 128 | 128 |
BLUE | 0x001F | 0 | 0 | 255 |
GREENYELLOW | 0xB7E0 | 180 | 255 | 0 |
GREEN | 0x07E0 | 0 | 255 | 0 |
YELLOW | 0xFFE0 | 255 | 255 | 0 |
ORANGE | 0xFDA0 | 255 | 180 | 0 |
PINK | 0xFC9F | 255 | 255 | 16 |
CYAN | 0x07FF | 0 | 255 | 255 |
DARKCYAN | 0x03EF | 0 | 128 | 128 |
RED | 0xF800 | 255 | 0 | 0 |
MAGENTA | 0xF81F | 255 | 0 | 255 |
WHITE | 0xFFFF | 255 | 255 | 255 |
Class name: LCD
Function:
Initialize for use
Function prototype:
void begin()
Example of use:
#include <M5Stack.h>
void setup() {
M5.Lcd.begin(); //Initialize M5Stack
}
void loop() {
}
Function:
Put the display into power saving mode
Function prototype:
void sleep()
Example of use:
#include <M5Stack.h>
void setup() {
M5.Lcd.begin(); //Initialize M5Stack
M5.Lcd.sleep(); //Switch to sleep mode
}
void loop() {
}
Function:
Clears the contents of the display
Function prototype:
void clear()
Example of use:
#include <M5Stack.h>
void setup() {
M5.Lcd.begin(); //Initialize M5Stack
M5.Power.begin();
M5.Lcd.fillScreen(RED);
delay(1000);
M5.Lcd.clear(); //Clear the contents of the display
}
void loop() {
}
Function:
Resume display from power saving mode
Function prototype:
void wakeup()
Example of use:
#include <M5Stack.h>
void setup() {
M5.Lcd.begin(); //Initialize M5Stack
M5.Lcd.wakeup(); //Resume display from power saving mode
}
void loop() {
}
Function:
Functionality:
Displays an integer at (x,y).
Function Prototype:
void drawNumber(long long_num, int32_t poX, int32_t poY)
Parameter | Type | Description |
---|---|---|
long_num | long | Number |
poX | int32_t | X coordinate |
poY | int32_t | Y coordinate |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawNumber(99, 55, 100); // Display the integer 100 at (55,100)
}
void loop(){
}
Functionality:
Displays a character at (X,Y) using font.
Function Prototype:
int16_t drawChar(int16_t uniCode, int32_t x, uint16_t y, uint8_t font)
Parameter | Type | Description |
---|---|---|
uniCode | int16_t | Character |
x | int32_t | X coordinate |
y | uint16_t | Y coordinate |
font | uint8_t | Font |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawChar('A', 160, 120, 2); // Display character 'A' at (160,120) using font 2
}
void loop(){
}
Functionality:
Displays a floating-point number at (X,Y) with dp decimal places.
Function Prototype:
int16_t drawFloat(float floatNumber, uint8_t dp, int32_t poX, int32_t poY)
Parameter | Type | Description |
---|---|---|
floatNumber | float | The floating number |
dp | uint8_t | Decimal places |
poX | int32_t | X coordinate |
poY | int32_t | Y coordinate |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawFloat(3.1415928,7,100,100); // Display the floating-point number 3.1415928 with 7 decimal places at (100,100)
}
void loop() {}
Functionality:
Draws a pixel at (x,y).
Function Prototype:
void drawPixel(int32_t x, int32_t y, uint32_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x | X coordinate | int32_t |
y | Y coordinate | int32_t |
color | Color | uint32_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawPixel(22,22,RED); // Draws a red pixel at (22,22)
}
void loop() {}
Functionality:
Draws a line from point (x0,y0) to point (x1,y1) in the specified color (color).
Function Prototype:
void drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t color)
Parameter | Type | Description |
---|---|---|
x* | int32_t | X coordinate |
y* | int32_t | Y coordinate |
color | uint32_t | Color |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawLine(200, 0, 200, 200, GREEN); // Draws a green line from point (200,0) to point (200,200)
}
void loop(){
}
Functionality:
Draws a rectangle frame at (x,y) in the specified color, with width and height as w and h respectively.
Function Prototype:
void drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)
Parameter | Type | Description |
---|---|---|
x | int32_t | X coordinate |
y | int32_t | Y coordinate |
w | int32_t | Width of the rectangle |
h | int32_t | Height of the rectangle |
color | uint32_t | Color |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawRect(180, 12, 122, 10, BLUE); // Draws a blue rectangle frame at (180,12) with width 122 and height 10
}
void loop(){
}
Functionality:
Draws a filled rectangle at (x,y) in the specified color, with width and height as w and h respectively.
Function Prototype:
void fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)
Parameter | Type | Description |
---|---|---|
x | int32_t | X coordinate |
y | int32_t | Y coordinate |
w | int32_t | Rectangle width (pixels) |
h | int32_t | Rectangle height (pixels) |
color | uint32_t | Color |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.fillRect(150, 120, 122, 10, BLUE); // Draws a blue filled rectangle at (150,120) with a width of 122 and height of 10
}
void loop(){
}
Functionality:
Draws a rounded rectangle frame at (x,y) with width w, height h, corner radius r, and color color.
Function Prototype:
void drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t color)
Parameter | Type | Description |
---|---|---|
x | int32_t | X coordinate of the top-left corner |
y | int32_t | Y coordinate of the top-left corner |
w | int32_t | Rectangle width (pixels) |
h | int32_t | Rectangle height (pixels) |
r | int32_t | Corner radius |
color | uint32_t | Color |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawRoundRect(55,55,30,50,10,GREEN); // Draws a rounded rectangle frame at (55,55) with width 30, height 50, corner radius 10, and color green
}
void loop() {}
Functionality:
Draws a filled rounded rectangle at (x,y) with width w, height h, corner radius r, and color color.
Function Prototype:
void fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t color)
Parameter | Type | Description |
---|---|---|
x | int32_t | X coordinate of the top-left corner |
y | int32_t | Y coordinate of the top-left corner |
w | int32_t | Rectangle width (pixels) |
h | int32_t | Rectangle height (pixels) |
r | int32_t | Corner radius |
color | uint32_t | Color |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.fillRoundRect(55, 55, 30, 50, 10, GREEN); // Draws a filled rounded rectangle at (55,55) with width 30, height 50, corner radius 10, and color green
}
void loop()
Functionality:
Draws a circle outline at (x,y) with radius r and in color color.
Function Prototype:
void drawCircle(int32_t x0, int32_t y0, int32_t r, uint32_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x0 | X coordinate of the circle's center | int32_t |
y0 | Y coordinate of the circle's center | int32_t |
r | Circle's radius | int32_t |
color | Circle's color | uint32_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawCircle(100, 100, 50, RED); // Draws a red circle outline at (100,100) with a radius of 50
}
void loop() {}
Functionality:
Draws a filled circle at (x,y) with radius r and in color color.
Function Prototype:
void drawCircle(int32_t x0, int32_t y0, int32_t r, uint32_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x0 | X coordinate of the circle's center | int32_t |
y0 | Y coordinate of the circle's center | int32_t |
r | Circle's radius | int32_t |
color | Circle's color | uint32_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.fillCircle(100, 100, 50, RED); // Draws a filled red circle at (100,100) with a radius of 50
}
void loop() {}
Functionality:
Draws an ellipse outline at (x,y) with width rx, height ry, and in color color.
Function Prototype:
void fillEllipse(int16_t x0, int16_t y0, int32_t rx, int32_t ry, uint16_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x0 | X coordinate of the ellipse's center | int16_t |
y0 | Y coordinate of the ellipse's center | int16_t |
rx | Ellipse's width (pixels) | int32_t |
ry | Ellipse's height (pixels) | int32_t |
color | Ellipse's color | uint16_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawEllipse(160, 100, 60, 100, YELLOW); // Draws a yellow ellipse outline at (160,100) with width 60 and height 100
}
void loop() {}
Functionality:
Draws a filled ellipse at (x,y) with width rx, height ry, and in color color.
Function Prototype:
void fillEllipse(int16_t x0, int16_t y0, int32_t rx, int32_t ry, uint16_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x0 | X coordinate of the ellipse's center | int16_t |
y0 | Y coordinate of the ellipse's center | int16_t |
rx | Ellipse's width (pixels) | int32_t |
ry | Ellipse's height (pixels) | int32_t |
color | Ellipse's color | uint16_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.fillEllipse(160, 100, 60, 100, YELLOW); // Draws a filled yellow ellipse at (160,100) with width 60 and height 100
}
void loop() {}
Functionality:
Draws a triangle outline with vertices at (x1, y1), (x2, y2), (x3, y3).
Function Prototype:
void drawTriangle(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x* | X coordinate of vertex * | int32_t |
y* | Y coordinate of vertex * | int32_t |
color | Triangle's color | uint32_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawTriangle(30, 30, 180, 100, 80, 150, YELLOW); // Draws a yellow triangle outline with vertices at (30,30), (180,100), and (80,150)
}
void loop() {}
Functionality:
Draws a filled triangle with vertices at (x1, y1), (x2, y2), (x3, y3).
Function Prototype:
void fillTriangle(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t color)
Parameters:
Parameter | Description | Type |
---|---|---|
x* | X coordinate of vertex * | int32_t |
y* | Y coordinate of vertex * | int32_t |
color | Triangle's color | uint32_t |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.fillTriangle(30, 30, 180, 100, 80, 150, YELLOW); // Draws a filled yellow triangle with vertices at (30,30), (180,100), and (80,150)
}
void loop() {}
Functionality:
Draws a bitmap.
Function Prototype:
void drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color)
Parameter | Type | Description |
---|---|---|
x | int16_t | X coordinate |
y | int16_t | Y coordinate |
bitmap | const uint8_t | Bitmap image |
w | int16_t | Width (pixels) |
h | int16_t | Height (pixels) |
color | uint16_t | Color |
Usage Example:
See the sketch example under: M5Stack
-> Advanced
-> Display
-> drawXBitmap
Functionality:
Draws a bitmap.
Function Prototypes:
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)
Parameter | Type | Description |
---|---|---|
x0 | int16_t | X coordinate |
y0 | int16_t | Y coordinate |
w | int16_t | Width (pixels) |
h | int16_t | Height (pixels) |
data | uint16_t* / uint8_t* | Bitmap data |
transparent | uint16_t | Transparent color code |
Usage Example:
See the sketch example under: M5Stack
-> games
-> Tetris
Functionality:
Reads a bitmap from a file and draws it.
Function Prototype:
void drawBmpFile(fs::FS &fs, const char *path, uint16_t x, uint16_t y)
Parameter | Type | Description |
---|---|---|
fs | fs::FS | File stream |
path | const char * | File path (SD, SPIFFS) |
x | int16_t | X coordinate |
y | int16_t | Y coordinate |
Usage Example:
#include "FS.h"
//#include "SPIFFS.h"
#include <M5Stack.h>
void setup(){
M5.begin(true, false, false, false);
M5.Power.begin();
M5.Lcd.drawBmpFile(SD, "/p2.bmp",0,0);
//M5.Lcd.drawBmpFile(SPIFFS, "/p2.bmp", 0, 0);
}
We provide a script that can be used to convert jpg
images to .c
files. You can use it to convert some pictures and use the above API to draw the images on the screen.
bin2code.py
Functionality:
Reads JPEG format image data from memory and draws it.
Function Prototype:
void drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x, uint16_t y, uint16_t maxWidth, uint16_t maxHeight, uint16_t offX, uint16_t offY, jpeg_div_t scale) {
Parameter | Type | Description |
---|---|---|
jpg_data | uint8_t * | Data pointer |
jpg_len | size_t | Data length |
x | uint16_t | X-coordinate |
y | uint16_t | Y-coordinate |
maxWidth | uint16_t | Maximum width (pixels) |
maxHeight | uint16_t | Maximum height (pixels) |
offX | uint16_t | Offset X (pixels) |
offY | uint16_t | Offset Y (pixels) |
scale | jpeg_div_t | Scale |
Scale (jpeg_div_t):
Definition | Function |
---|---|
JPEG_DIV_NONE | No care. |
JPEG_DIV_2 | 1/2 scale |
JPEG_DIV_4 | 1/4 scale |
JPEG_DIV_8 | 1/8 scale |
JPEG_DIV_MAX | MAX scale |
Usage Example:
#include <M5Stack.h>
extern uint8_t tetris_img[]; // Reference the array storing the image, needs to be in the same folder as xxx.ino beforehand
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.drawJpg(tetris_img, 34215); // Read the jpeg file named tetris_img from memory
}
void loop(){
}
Functionality:
Reads JPEG data from a file stream and draws it.
Function Prototype:
void drawJpgFile(fs::FS &fs, const char *path, uint16_t x, uint16_t y, uint16_t maxWidth, uint16_t maxHeight, uint16_t offX, uint16_t offY, jpeg_div_t scale)
Parameter | Type | Description |
---|---|---|
fs | fs::FS | File stream |
path | const char * | File path |
x | uint16_t | X-coordinate |
y | uint16_t | Y-coordinate |
maxWidth | uint16_t | Max Width (pixels) |
maxHeight | uint16_t | Max Height (pixels) |
offX | uint16_t | Offset X (pixels) |
offY | uint16_t | Offset Y (pixels) |
scale | jpeg_div_t | Scale |
Scale (jpeg_div_t):
Definition | Function |
---|---|
JPEG_DIV_NONE | No care. |
JPEG_DIV_2 | 1/2 scale |
JPEG_DIV_4 | 1/4 scale |
JPEG_DIV_8 | 1/8 scale |
JPEG_DIV_MAX | MAX scale |
Functionality:
Displays a progress bar.
Function Prototype:
void progressBar(int x, int y, int w, int h, uint8_t val)
Parameter | Type | Description |
---|---|---|
x | int | X-coordinate |
y | int | Y-coordinate |
w | int | Width (pixels) |
h | int | Height (pixels) |
val | uint8_t | Progress (0-100%) |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.progressBar(0, 0, 240, 20, 20); // Display a progress bar at (0,0) with a width of 240, height of 20, and 20% progress
}
void loop() {
}
Functionality:
Generates a QR code.
Function Prototype:
void qrcode(const char *string, uint16_t x, uint16_t y, uint8_t width, uint8_t version)
void qrcode(const String &string, uint16_t x, uint16_t y, uint8_t width, uint8_t version)
Parameter | Type | Description |
---|---|---|
string | char * / String& | String to embed in QR |
x | uint16_t | X-coordinate |
y | uint16_t | Y-coordinate |
width | uint8_t | Width (pixels) |
version | uint8_t | QR code version |
Usage Example:
#include <M5Stack.h>
void setup() {
M5.Lcd.begin(); // Initialize M5Stack
M5.Power.begin();
M5.Lcd.qrcode("http://www.m5stack.com", 50, 10, 220, 6);
}
void loop() {
}
Functionality:
Sets the color depth.
Function Prototype:
void* TFT_eSprite::setColorDepth(int8_t b)
Usage Example:
#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
void setup() {
M5.begin(); // Init M5Stack. Initialize M5Stack
M5.Power.begin(); // Init power. Initialize power module
img.setColorDepth(8); // Set color depth. Set the color depth
img.setTextSize(2);
img.createSprite(320, 240); //Create a 320x240 canvas. Create a canvas of 320x240
}
void loop() {}
Note: The corresponding color depth should be set before creating a canvas.
Functionality:
Creates a canvas of specified width and height.
Function Prototype:
void createSprite(int16_t w, int16_t h, uint8_t frames)
Parameter | Type | Description |
---|---|---|
x | int16_t | X coordinate |
y | int16_t | Y coordinate |
frames | uint8_t | Color depth [1~2, optional] |
Usage Example:
#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
img.setColorDepth(8); // Set the color depth to 8 bits. Set color depth to 8 bits
img.createSprite(320, 240); //Create a 320x240 canvas. Create a canvas of 320x240
img.fillSprite(RED); //Fill the canvas with red. Fill the canvas with red
img.pushSprite(0,0); // Push the canvas to the screen at (0,0). Push the canvas to the screen at (0,0)
}
void loop() {}
Functionality:
Fills the Sprite with a specified color.
Function Prototype:
void fillSprite(uint32_t color)
Parameter | Type | Description |
---|---|---|
color | int32_t | filled color |
Usage Example:
#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
img.setColorDepth(8); // Set the color depth to 8 bits. Set color depth to 8 bits
img.createSprite(320, 240); //Create a 320x240 canvas. Create a canvas of 320x240
img.fillSprite(RED); //Fill the canvas with red. Fill the entire canvas with red
img.pushSprite(0,0); // Push the canvas to the screen at (0,0). Push the canvas to the screen at (0,0)
}
void loop() {}
}
Functionality:
Pushes the canvas to a specified coordinate, setting a transparent color.
Function Prototype:
void pushSprite(int32_t x, int32_t y, uint16_t transparent)
Parameter | Type | Description |
---|---|---|
x | int32_t | X coordinate |
y | int32_t | Y coordinate |
transparent | int16_t | Transparent color (optional) |
Usage Example:
#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
img.createSprite(320, 240); // Create a 320x240 canvas
img.fillSprite(RED); // Fill the entire canvas with red
img.fillCircle(100, 100, 20, GREEN);
img.pushSprite(0, 0, GREEN); // Push the canvas to the screen at (0,0) and set green as the transparent color
}
void loop() {}
Functionality:
Returns the height of the Sprite.
Usage Example:
#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
img.createSprite(320, 240); // Create a 320x240 canvas
img.fillSprite(RED); // Fill the entire canvas with red
img.pushSprite(0, 0, WHITE); // Push the canvas to the screen at (0,0) and set white as the transparent color
M5.Lcd.print(img.height()); // Print the height of the canvas on the screen
}
void loop() {}
Functionality:
Deletes the canvas from memory.
Usage Example:
#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
void setup() {
M5.begin(); // Initialize M5Stack
M5.Power.begin();
img.deleteSprite(); // Delete the canvas from memory
}
void loop() {}