天天看点

[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)

[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)

首先说一下写这个文档的目的,一是给自己做个笔记来以备后边使,二是写个文档给大家看,我从网上找了很多相关的文档,但真正的能让人看明白的却是不多,当然我写的你也有可能看不懂,哈哈!

1.12864引脚

我们采用的是7线的spi接口的ssd1306_128x64 oled显示屏

它包含7个引脚:

1.vcc:这个就没啥能说的了,就是接电源3.3v或者5v

2.gnd:接地

3.D0:spi接口的时钟线

4.D1:spi接口的数据线

5.RES:复位线,上电后需要一次复位

6.D/C:spi的数据命令选择指令

7.CS:spi片选,低电平有效,如不想用必须接地

[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)
2.软件部分

1.创建对象

声明函数:

U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* D0=*/ 13, /* D1=*/ 11, /* CS=*/ 10, /* DC=*/ 9, /* RES=*/ 8);
           

这个你需要知道你所有的显示器的信息(其实就是你要知道显示器的型号),然后从arduino中u8g2库中随便打开一个例子,上边就会有一排注释的型号,找到你的型号,然后复制粘贴就好了,这个对象就创建好了。

就像这样:

[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)

2.firstPage(),nextPage()

# include<Arduino.h>

# include<SPI.h>

# include<U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* D0=*/ 13, /* D=*/ 11, /* CS=*/ 10, /* DC=*/ 9, /* RES=*/ 8);

void setup() {
  u8g2.begin();//选择u8g2模式

}

void loop() {
  u8g2.firstPage();//调用此过程,标值着图像循环的开始
  do{
    u8g2.drawBox(48,20,25,15);//drawBox(x,y,w,h);x:矩形左上角的 横坐标;y:矩形左上角的 纵坐标;w:矩形的 宽;h:矩形的 高
    }while(u8g2.nextPage());//nextPage()调用此过程,标志着图像循环的结束
    delay(1000);

}
           

3.图形函数

1.drawPixel(x,y);//作用:画一个点  x:点的横坐标,y:点的纵坐标

2.drawLine(x1,y1,x2,y2);//作用:画一条线段 x1: 线段起点 横坐标,y1: 线段起点 纵坐标,x2: 线段终点横坐标,y2: 线段终点 纵坐标

3.drawHLine(x,y,w);//作用:画一条向右的水平线段  x:线段起点 横坐标,y:线段起点 纵坐标,w:水平宽度(w个像 //素点)

4.drawVLine(x,y,w);//作用:画一条向下的水平线段  x:线段起点 横坐标,y:线段起点 纵坐标,w:垂直高度(w个像素点)

5.drawTriangle(x0,y0,x1,y1,x2,y2);//作用:画一个实心三角形(空心三角形, 可以用drawLine画出)  x0:其中一角的 横坐标,y0:其中一角的 纵坐标,x1:另一角的 横坐标,y1:另一角的 纵坐标,x2:最后一角的 横坐标,y2:最后一角的 纵坐标

6.drwaFrame(x,y,w,h);//作用:画一个空心矩形 x:方框左上角点的横坐标,y:方框左上角点的纵坐标,w:方框的宽,h:方框的高

7.drawRFrame(x,y,w,h,r);//作用:画一个[color=Red]圆角空心矩形其中 最好满 足:w>=2x(r+1), h>=2x(r+1) x:圆角矩形左上角 横坐标,y:圆角矩形左上角 纵坐标,w:圆角矩形宽度,h:圆角矩形高度,r:圆角弧度的半径

8.drawBox(x,y,w,h)//作用:画一个实心矩形 x:矩形左上角的 横坐标,y:矩形左 上角的 纵坐标,w:矩形的 宽,h:矩形的 高

9.drawRBox(x,y,w,h,r);//作用: 画一个圆角实心矩形,与drawTFrame类似 x:圆角矩形左上角 横坐标,y:圆角矩形左上角 纵坐标,w:矩形的 宽,h:矩形的  高,r:圆角弧度半径

10.drawCircle(x0,y0,rad,opt);//作用:画一个空心圆 , x0:圆心 横坐标y0:圆心 纵坐标,rad:半径;
         //opt:
           //      U8G_DRAW_UPPER_RIGHT        上部右侧 1/4 圆弧
           //     U8G_DRAW_UPPER_LEFT          上部左侧 1/4 圆弧
           //      U8G_DRAW_LOWER_LEFT         下部左侧 1/4 圆弧
           //      U8G_DRAW_LOWER_RIGHT       下部右侧 1/4 圆弧
           //      U8G_DRAW_ALL                          整圆(默认)
                 
 //空心圆例子:
 					u8g.drawCircle(20,20, 14); //整圆
          u8g.drawCircle(20,20, 14, U8G_DRAW_UPPER_RIGHT); //1/4圆
           
 11.drawDisc(x0,y0,rad,opt);//同10
 
 12.drawEllipse(x0,rx,ry,opt);//作用:画一个椭圆 
 
 13.drawFilledEllipse(x0,rx,ry,opt);//作用:画一个椭圆(实心)
 
 
           

4.设置

1.setFront();//设置要显示的字符的字体。

2.setPrintPos(x,y);//作用:设置下文中print()的显示位置 x:横坐标,y:纵坐标

3.setColorIndex(color_index);//作用:对于本文使用的单色oled来说,此函数的功能为显示对象。可以理解为透明或不透明。对于灰度值得屏幕则是一个灰度值 color_index:0 或 1;

4.setRot90(),setRot180(),setRot270()//作用:将显示得结果旋转90,180,270.
  
5.setFrontPosTop();//使用drawStr显示字符串时,默认标准为显示字符的左下角坐标,本函数可理解为将坐标位置改为显示字符串的左上角为坐标标准.
           

5.显示字符

1.drawStr(x,y,*c);//功能:使用前要使用setFont函数设置显示字符的字体另外还有drawStr90(),drawStr180(),drawStr270();将字符顺时针旋转相应的角度   x:字符左下角的横坐标,y:字符左下角的纵坐标,*c:要显示的字符

2.print(...);//功能:打印要显示的字符,包括变量值、字符串等,使用前要使用setPrintPos()函数设置位置。
           

6.图像

1.drawXBMP(x,y,w,h,*bitmap);//功能:显示一个位图的方法 x:位图左上角的横坐标 y:位图左上角的纵坐标 w:位图的宽 h:位图的高 *bitmap:位图对象

2.drawBitmapP(x,y,cnt,h,*bitmap);//作用:显示位图的方法 x:位图左上角的横坐标 y:位图左上角的纵坐标 cnt:在水平方向上位图的字节数,该位图的宽度是cnt*8 h:位图的高 *bitmap:位图对象
           

7.获得图像

1.getHeight();//作用:获得屏幕高度放在picture loop里面和外面均可以,返回:屏幕高度

2.getWidth();//作用:获得屏幕宽度放在picture loop 里面和外面都可以,返回:屏幕宽度

3.getStrWidth();//作用:获得显示字符串的宽度,按照不同字体显示的字符串高度共占了多少像素 返回值:字符串的宽度
           
3.安装u8g2库
[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)
[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)
4.参考的大神链接

1. u8glib, u8g2的常用函数说明

这个大神里面各个函数都有例子

2.【原创】OLED屏-U8glib库 增强版 U8G2库

这个大神写的不错

3.感觉不错的话,打个赏呗,虽然我还不知道咋打赏

4.如有侵权请联系我

qq:2640014603