M5GFX 是一个为 M5Stack 产品操作显示设备的库,用户可以调用该库中的 API 实现不同的显示效果及触摸效果等。
每个设备的包含文件都不同,M5Stack 设备主要使用的头文件是 M5GFX.h;其他设备如 Unit LCD 需要使用的头文件为 M5UnitLCD.h,Unit OLED、Atom Display 同理。
支持的设备:
M5Stack 核心控制器,如 M5Fire、M5Core2、M5Tough、M5StickC、M5Paper、M5Tab 等。
构造函数原型:
M5GFX(void) 功能说明:
案例程序:
#include <M5GFX.h>
M5GFX display;
void setup() {
display.begin();
uint16_t x = display.width() / 2;
uint16_t y = display.height() / 2;
display.drawCenterString("M5Stack", x, y);
}
void loop() {
}支持的设备:
M5Stack Unit LCD
构造函数原型:
M5UnitLCD( uint8_t pin_sda = M5UNITLCD_SDA, uint8_t pin_scl = M5UNITLCD_SCL, uint32_t i2c_freq = M5UNITLCD_FREQ,
int8_t i2c_port = -1, uint8_t i2c_addr = 0x3E ) 功能说明:
传入参数:
i2c_port 和 i2c_addr 即使不传入参数,也会自动配置为 PORT.A 和 0x3E。函数原型:
void init( uint8_t pin_sda, uint8_t pin_scl, uint32_t i2c_freq = M5UNITLCD_FREQ, int8_t i2c_port = -1, uint8_t i2c_addr = 0x3E ) 功能说明:
传入参数:
函数原型:
setup(uint8_t pin_sda = M5UNITLCD_SDA, uint8_t pin_scl = M5UNITLCD_SCL, uint32_t i2c_freq = M5UNITLCD_FREQ,
int8_t i2c_port = -1, uint8_t i2c_addr = 0x3E) 功能说明:
传入参数:
案例程序:
#include <M5UnitLCD.h>
M5UnitLCD display;
void setup() {
display.init( 21, 22, 400000 );
display.setup( 21, 22, 400000 );
uint16_t x = display.width() / 2;
uint16_t y = display.height() / 2;
display.drawCenterString("M5Stack", x, y);
}
void loop() {
}支持的设备:
M5Stack Unit OLED
构造函数原型:
M5UnitOLED( uint8_t pin_sda = M5UNITOLED_SDA, uint8_t pin_scl = M5UNITOLED_SCL, uint32_t i2c_freq = M5UNITOLED_FREQ,
int8_t i2c_port = -1, uint8_t i2c_addr = 0x3C) 功能说明:
传入参数:
i2c_port 和 i2c_addr 即使不传入参数,也会自动配置为 PORT.A 和 0x3C。函数原型:
void init( uint8_t pin_sda, uint8_t pin_scl, uint32_t i2c_freq = M5UNITOLED_FREQ, int8_t i2c_port = -1, uint8_t i2c_addr = 0x3C ) 功能说明:
传入参数:
函数原型:
setup(uint8_t pin_sda = M5UNITLCD_SDA, uint8_t pin_scl = M5UNITLCD_SCL, uint32_t i2c_freq = M5UNITLCD_FREQ,
int8_t i2c_port = -1, uint8_t i2c_addr = 0x3C) 功能说明:
传入参数:
案例程序:
#include <M5UnitOLED.h>
M5UnitOLED display;
void setup() {
display.init( 21, 22, 400000 );
display.setup( 21, 22, 400000 );
uint16_t x = display.width() / 2;
uint16_t y = display.height() / 2;
display.drawCenterString("M5Stack", x, y);
}
void loop() {
}支持的设备:
M5Stack Atom Display、AtomDisplayLite
构造函数原型:
M5AtomDisplay( unit16_t logical_width = 1280, uint16_t logical_height = 720, float refresh_rate = 0.0f, uint16_t output_width = 0, uint16_t output_height = 0,
uint_fast8_t scale_w = 0, uint_fast8_t scale_h = 0, uint32_t pixel_clock = 74250000) 功能说明:
传入参数:
函数原型:
bool setResolution(uint16_t logical_width = 0, uint16_t logical_height = 0, float refresh_rate = 0.0f, uint16_t output_width = 0, uint16_t output_height = 0,
uint_fast8_t scale_w = 0, uint_fast8_t scale_h = 0, uint32_t pixel_clock = 74250000) 功能说明:
传入参数:
案例程序:
#include <M5AtomDisplay.h>
M5AtomDisplay display( 640, 480, 60 );
void setup() {
display.setResolution( 320, 240, 60 );
uint16_t x = display.width() / 2;
uint16_t y = display.height() / 2;
display.drawCenterString("M5Stack", x, y);
}
void loop() {
}M5GFX 一些 API 的使用除 M5GFX.h(或M5UnitLCD.h,M5UnitOLED.h,M5AtomDisplay.h)外还必须包含其他对应的头文件,否则无法成功被调用。
相关 API 及头文件如下表:
| API | 必需的头文件 |
|---|---|
| drawBmpFile | SD.h or SPIFFS.h |
| drawJpgFile | SD.h or SPIFFS.h |
| drawPngFile | SD.h or SPIFFS.h |
| drawQoiFile | SD.h or SPIFFS.h |
| drawBmpUrl | HTTPClient.h |
| drawJpgUrl | HTTPClient.h |
| drawPngUrl | HTTPClient.h |
| drawQoiUrl | HTTPClient.h |
SD.h 还是 SPIFFS.h 需根据图像数据所在位置为外部存储卡还是主控内存选用。