天天看點

[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