开发板:arduino uno
显示屏:oled 0.96寸 IIC 4针
oled的接线
GND连接到arduino的GND上。
VCC连接到arduino的5V上。
SCL连接到arduino的A5接口上。
SDA连接到arduino的A4接口上。
使用U8g2lib操作oled
这里使用U8g2lib库。安装教程
注意事项
oled显示ASCLL码是8x8,显示中文编码是16x16。
oled输出字符是从左下角开始绘制的。
操作oled前必须使用begin()函数进行初始化。
输出中文/英文字符串前必须设置对应的字体
画线和圆或者图片时必须先clearBuffer()清空oled缓存,再进行画图,画图是先在缓存中进行的,画图结束后使用sendBuffer()函数把缓存中的图回执到平面上。
函数介绍
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA); //配置构造函数
u8g2.begin(); //初始化oled模块
int8_t a=u8g2.getMaxCharHeight(); //获取最大高度
int8_t b=u8g2.getMaxCharWidth(); //获取最大宽度u8g2.clearBuffer(); //清空oled缓存
u8g2.sendBuffer(); //加载缓存中的内容
u8g2.drawGlyph(58,30,66); //画心,符号左下角坐标为(58,36),爱心符号的编号为66
u8g2.drawLine(88,18,108,30); //画斜线,(起始X,起始Y),(结束X,结束Y)
u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆,参数为U8G2_DRAW_LOWER_RIGHT为右半圆
u8g2.setFont(u8g2_font_open_iconic_human_2x_t); //设置英文字体
u8g2.drawUTF8(34,46,"I Love I"); //显示英文字符串,左下角位置坐标为(78,30)
u8g2.setFont(u8g2_font_unifont_t_chinese2); //设置汉字字体
u8g2.drawUTF8(16,16,"我是汉字"); //显示文字,左下角位置坐标为(16,16),汉字显示的大小为16x16像素
arduino代码
#include <U8g2lib.h> //u8g2库
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA); //配置构造函数
int a=66; //定义变量a=66
void setup()
{
u8g2.begin(); //启动u8g2驱动程序
u8g2.clearBuffer(); //清空显示屏缓存
}
void loop()
{
face(); //调用函数,显示图案
delay(1000); //持续一秒钟
heart(); //调用函数,显示英文字母和图案
delay(1000); //持续一秒钟
letter(a); //调用函数,显示中文和变量
delay(1000); //持续一秒钟
}
void face()
{
u8g2.clearBuffer(); //清空显示屏缓存
u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_LEFT); //画四分之一圆,圆心坐标(56,44),半径8
u8g2.drawCircle(56,40,8,U8G2_DRAW_LOWER_RIGHT); //画四分之一圆
u8g2.drawCircle(72,40,8,U8G2_DRAW_LOWER_LEFT); //画四分之一圆
u8g2.drawCircle(72,40,8,U8G2_DRAW_LOWER_RIGHT); //画四分之一圆
u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆
u8g2.drawCircle(56,41,8,U8G2_DRAW_LOWER_RIGHT); //加粗画四分之一圆
u8g2.drawCircle(72,41,8,U8G2_DRAW_LOWER_LEFT); //加粗画四分之一圆
u8g2.drawCircle(72,41,8,U8G2_DRAW_LOWER_RIGHT); //加粗画四分之一圆
u8g2.drawLine(40,18,20,30); //画斜线,两端点坐标分别是(40,18)(20,30)
u8g2.drawLine(88,18,108,30); //画斜线
u8g2.drawLine(40,17,20,29); //加粗画斜线
u8g2.drawLine(88,17,108,29); //加粗画斜线
u8g2.sendBuffer(); //加载以上内容
}
void heart()
{
u8g2.clearBuffer(); //清空显示屏缓存
u8g2.setFont(u8g2_font_open_iconic_human_2x_t); //设置字体
u8g2.drawGlyph(58,30,66); //画心,符号左下角坐标为(58,36),符号编号为66
u8g2.setFont(u8g2_font_unifont_t_chinese2); //设置字体
u8g2.drawUTF8(34,46,"I Love I"); //显示英文,左下角位置坐标为(78,30)
u8g2.sendBuffer(); // 加载以上内容
}
void letter(int a)
{
u8g2.clearBuffer(); //清空显示屏缓存
//int8_t a=u8g2.getMaxCharHeight(); //获取最大高度
//int8_t b=u8g2.getMaxCharWidth(); //获取最大宽度
u8g2.setFont(u8g2_font_unifont_t_chinese2); //设置字体
u8g2.drawUTF8(16,16,"我是汉字"); //显示文字,左下角位置坐标为(16,16),汉字显示的大小为16x16像素
u8g2.sendBuffer(); //显示内容
}
参考链接:https://blog.csdn.net/jianghaoran1/article/details/121870783
参考链接:https://blog.csdn.net/qq_17351161/article/details/105177112