arduino u8g2库探秘
u8g2 类的 begin() 函数用于简化 Arduino 环境下的显示设置步骤,该函数在底层会依次调用 initDisplay()、clearDisplay()、setPowerSave() 三个函数:
bool begin(void)
begin() 函数还可以用于绑定按键检测事件(最高可以绑定 6 个按键),如果没有连接相应的按键,则对应的参数可以设置为 U8X8_PIN_NONE:
bool begin( uint8_t menu_select_pin, uint8_t menu_next_pin, uint8_t menu_prev_pin, uint8_t menu_up_pin = U8X8_PIN_NONE, uint8_t menu_down_pin = U8X8_PIN_NONE, uint8_t menu_home_pin = U8X8_PIN_NONE )
除了 begin() 函数之外,u8g2 类还提供有如下的屏幕显示初始化函数:
| void setBusClock(uint32_t clock_speed); | 设置总线通信的时钟频率,I²C 总线可以尝试 200000 或者 400000,SPI 总线可以尝试 1000000 或者 8000000。 |
| void setContrast(uint8_t value) | 设置显示对比度/亮度,取值范围从 0 ~ 255。 |
1. u8g2.begin() —— 构造U8G2
初始化显示器, 清屏, 唤醒屏幕
/**
* 初始化U8g2库
* @Note 关联方法 initDisplay clearDisplay setPowerSave
*/
bool U8G2::begin(void)
2. u8g2.beginSimple() —— 构造U8G2
只是初始化显示器, 并不清屏, 也不唤醒屏幕
3. u8g2.initDisplay() —— 初始化显示控制器
/**
* 初始化显示控制器
*/
void U8G2::initDisplay(void)
4. u8g2.clearDisplay() —— 清除屏幕内容
/**
* 清除屏幕
*/
void U8G2::clearDisplay(void)
5. u8g2.setPowerSave() —— 是否开启省电模式
/**
* 清除显示缓冲区
* @param is_enable
* 1 表示启用显示器的省电模式,屏幕上看不到任何东西
* 0 表示禁用省电模式
*/
void U8G2::setPowerSave(uint8_t is_enable)
6. u8g2.clear() —— 清除操作
/**
* 清除屏幕显示,清除缓冲区,光标回到左上角原点位置(0,0)
* @Note 关联方法 home clearDisplay clearBuffer
*/
void U8G2::clear(void)
7. u8g2.clearBuffer() —— 清除缓冲区
/**
* 清除内存中数据缓冲区
*/
void U8G2::clearBuffer(void)
9. u8g2.setAutoPageClear() —— 设置自动清除缓冲区
/**
* 是否自动清除缓冲区
* @param mode 0 表示关闭
* 1 表示开启,默认是开启
*/
void U8G2::setAutoPageClear(uint8_t mode)
建议该方法保持默认就好,如果用户禁止了,那么需要自己维护缓冲区的状态或者手动调用clearBuffer;
10. u8g2.setBitmapMode() —— 设置位图模式
/**
* 设置位图模式(定义drawXBM方法是否绘制背景颜色)
* @param is_transparent
* 0 绘制背景颜色,不透明,默认是该值
* 1 不绘制背景颜色,透明
* @Note 关联方法 drawXBM
*/
void U8G2::setBitmapMode(uint8_t is_transparent)
11. u8g2.setBusClock() —— 设置总线时钟
/**
* 设置总线时钟(I2C SPI)
* @param mode clock_speed 总线时钟频率(Hz)
* @Note 关联方法 begin
*/
void U8G2::setBusClock(uint32_t clock_speed);
仅仅Arduino平台支持;
必须在u8g2.begin() 或者 u8g2.initDisplay()之前调用;
12. u8g2.setClipWindow() —— 限制绘图区域大小
/**
* 设置采集窗口,窗口范围从左上角(x0,y0)到右下角(x1,y1)
* 也就是我们绘制的内容只能在规范范围内显示
* @param x0 左上角x坐标
* @param y0 左上角y坐标
* @param x1 右下角x坐标
* @param y1 右下角y坐标
* @Note 关联方法 begin
*/
void U8G2::setClipWindow(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t x1, u8g2_uint_t y1 );
可以通过 setMaxClipWindow 去掉该限制
13. u8g2.setCursor() —— 设置光标位置
/**
* 设置绘制光标位置(x,y)
* @Note 关联方法 print
*/
void U8G2::setCursor(u8g2_uint_t x, u8g2_uint_t y)
14. u8g2.setDisplayRotation() —— 设置显示器的旋转角度
/**
* 设置显示器的旋转角度
* @param u8g2_cb 旋转选项
* U8G2_R0 不做旋转 水平
* U8G2_R1 旋转90度
* U8G2_R2 旋转180度
* U8G2_R3 旋转270度
* U8G2_MIRROR 不做旋转 水平,显示内容是镜像的,暂时不理解
*/
void setDisplayRotation(const u8g2_cb_t *u8g2_cb)
15. u8g2.setDrawColor() —— 设置绘制颜色
/**
* 设置绘制颜色(暂时还没有具体去了解用法)
*/
void U8G2::setDrawColor(uint8_t color)
16. u8g2.setFont() —— 设置字体集
/**
* 设置字体集(字体集用于字符串绘制方法或者glyph绘制方法)
* @param font 具体的字体集
* @Note 关联方法 drawUTF8 drawStr drawGlyph print
*/
void U8G2::setFont(const uint8_t *font)
请看第九章获取字库更多信息
17. u8g2.setFontMode() 设置显示模式
启用(1)或禁用(0)透明模式
18. u8g2.setFontDirection() —— 设置字体方向
/**
* 定义字符串绘制或者图形绘制的方向
* @param dir 方向
* @param 关联方法 drawStr
*/
void U8G2::setFontDirection(uint8_t dir)
六. 缓存相关函数
1. u8g2.getBufferPtr() —— 获取缓存空间的地址
/**
* 获取缓存空间的地址
* @return 返回缓存空间起始地址
* @Note 关联方法 getBufferTileHeight, getBufferTileWidth, clearBuffer
*/
uint8_t *U8G2::getBufferPtr(void)
2. u8g2.getBufferTileHeight() —— 获取缓冲区的Tile高度
/**
* 获取缓冲区的Tile高度
* @return 返回高度值
*/
uint8_t U8G2::getBufferTileHeight(void)
一个tile等于8个像素点.
3. u8g2.getBufferTileWidth() —— 获取缓冲区的Tile宽度
/**
* 获取缓冲区的Tile宽度
* @return 返回宽度值
*/
uint8_t U8G2::getBufferTileWidth(void)
4. u8g2.getBufferCurrTileRow() —— 获取缓冲区的当前Tile row
/**
* 获取缓冲区的当前Tile row行数
* @return 返回当前的tilerow
*/
uint8_t U8G2::getBufferCurrTileRow(void)
5. u8g2.setBufferCurrTileRow() —— 设置缓冲区的当前Tile row
/**
* 设置缓冲区的当前Tile row
* @param 当前的tilerow
*/
void U8G2::setBufferCurrTileRow(uint8_t row)
在 firstPage/nextPage 循环时,由于底层调用了setBufferCurrTileRow,所以尽量不要自己手动调用该方法
浙公网安备 33010602011771号