Arduino操作OLED IIC 4针

开发板: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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值