## OLED(OLED)

驱动库使用通用性更好的软件(模拟)IIC的方式驱动OLED,但是亚博智能STM32平衡小车V2在硬件电路上是支持硬件IIC的

本章节内容仅介绍OLED相关方法,不介绍软件IIC的实现

### 方法 #### void OLED_I2C_Init() 初始化OLED模块 #### void OLED_Clear() 清空屏幕 #### void OLED_Refresh() 刷新屏幕 #### void OLED_Draw_Stringg(char *str, uint8_t x, uint8_t y, bool clear, bool refresh) 在指定位置写入字符串
参数类型注释
strchar *想要OLED显示的字符串
xuint8_t绘制字符串x方向上的起始坐标
yuint8_t绘制字符串y方向上的起始坐标
clearbool是否清空屏幕
refreshuint8_t是否立即屏幕
绘制完成后需要调用刷新方法才能显示
#### void OLED_Draw_Line(char *str, uint8_t line, bool clear, bool refresh) 在指定行写入字符串 /* 写入一行字符 */
参数类型注释
strchar *想要OLED显示的字符串
lineuint8_t在第几行显示字符串
clearbool是否清空屏幕
refreshuint8_t是否立即屏幕
默认行高为10

下述方法为驱动芯片SSD1306提供,可以进行更细致的绘制操作

#### SSD1306_UpdateScreen() 单位更新OLED显示屏内容
返回值类型
void
#### SSD1306_ToggleInvert() 切换OLED显示的颜色反转
返回值类型
void
#### SSD1306_Fill(SSD1306_COLOR_t Color) 填充屏幕的颜色
参数类型注释
ColorSSD1306_COLOR_t填充颜色
返回值类型
void
#### SSD1306_DrawPixel(uint16_t x, uint16_t y, SSD1306_COLOR_t color) 在指定坐标绘制一个像素
参数类型注释
xuint16_tx坐标
yuint16_ty坐标
colorSSD1306_COLOR_t像素颜色
返回值类型
void
#### SSD1306_GotoXY(uint16_t x, uint16_t y) 设置下一个字符的绘制坐标
参数类型注释
xuint16_tx坐标
yuint16_ty坐标
返回值类型
void
#### SSD1306_Putc(char ch, FontDef_t *Font, SSD1306_COLOR_t color) 绘制单个字符
参数类型注释
chchar要绘制的字符
FontFontDef_t*使用的字体结构体
colorSSD1306_COLOR_t字符颜色
返回值类型
char
#### SSD1306_Puts(char *str, FontDef_t *Font, SSD1306_COLOR_t color) 绘制字符串
参数类型注释
strchar*要绘制的字符串
FontFontDef_t*使用的字体结构体
colorSSD1306_COLOR_t字符串颜色
返回值类型
char
#### SSD1306_DrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, SSD1306_COLOR_t c) 绘制一条线
参数类型注释
x0uint16_t起始点x坐标
y0uint16_t起始点y坐标
x1uint16_t结束点x坐标
y1uint16_t结束点y坐标
cSSD1306_COLOR_t线条颜色
返回值类型
void
#### SSD1306_DrawRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, SSD1306_COLOR_t c) 绘制矩形
参数类型注释
xuint16_t左上角x坐标
yuint16_t左上角y坐标
wuint16_t矩形宽度
huint16_t矩形高度
cSSD1306_COLOR_t矩形颜色
返回值类型
void
#### SSD1306_DrawFilledRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, SSD1306_COLOR_t c) 绘制填充矩形
参数类型注释
xuint16_t左上角x坐标
yuint16_t左上角y坐标
wuint16_t矩形宽度
huint16_t矩形高度
cSSD1306_COLOR_t矩形颜色
返回值类型
void
#### SSD1306_DrawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, SSD1306_COLOR_t color) 绘制三角形
参数类型注释
x1uint16_t第一点x坐标
y1uint16_t第一点y坐标
x2uint16_t第二点x坐标
y2uint16_t第二点y坐标
x3uint16_t第三点x坐标
y3uint16_t第三点y坐标
colorSSD1306_COLOR_t三角形颜色
返回值类型
void
#### SSD1306_DrawCircle(int16_t x0, int16_t y0, int16_t r, SSD1306_COLOR_t c) 绘制圆形
参数类型注释
x0int16_t圆心x坐标
y0int16_t圆心y坐标
rint16_t半径
cSSD1306_COLOR_t圆形颜色
返回值类型
void
#### SSD1306_DrawFilledCircle(int16_t x0, int16_t y0, int16_t r, SSD1306_COLOR_t c) 绘制填充圆形
参数类型注释
x0int16_t圆心x坐标
y0int16_t圆心y坐标
rint16_t半径
cSSD1306_COLOR_t填充圆形颜色
返回值类型
void
#### ssd1306_I2C_Init() 初始化I2C接口
返回值类型
void
#### ssd1306_I2C_Write(uint8_t address, uint8_t reg, uint8_t data) 向指定地址和寄存器写入数据
参数类型注释
addressuint8_tI2C设备地址
reguint8_t寄存器地址
datauint8_t要写入的数据
返回值类型
void
#### ssd1306_I2C_WriteMulti(uint8_t address, uint8_t reg, uint8_t *data, uint16_t count) 向指定地址和寄存器写入多个数据
参数类型注释
addressuint8_tI2C设备地址
reguint8_t寄存器地址
datauint8_t*指向数据的指针
countuint16_t要写入的数据数量
返回值类型
void
### 使用示例

#include "bsp_oled_i2c.h"
#include "bsp_oled.h"
int main() {
    OLED_I2C_Init();
    OLED_Clear();
    while(1) {
        OLED_DrawLine("Hello Yahboom!",1, 0, true, true);
    }
    return 0;
}