Arduino提高篇04—U8g2庫驅動OLED

OLED顯示屏的驅動庫非常多,本篇介紹強大的U8g2庫,通過使用U8g2庫來驅動OLED屏。

1. U8g2庫介紹

U8g2庫是嵌入式設備單色圖形庫,支持非常多的嵌入式設備平臺,如單片機、STM32、Arduino等,支持大部分主流的單色OLED和LCD顯示控制器,如我們常見的SSD1306。其包括了多種圖形的繪製,支持多種字體。

官方提供了一些U8g2庫測試圖

測試圖01

測試圖02

測試圖03

測試圖04

測試圖05

2. 安裝U8g2庫

在Arduino IDE中點擊「項目」—「加載庫」—「管理庫」,查找選擇最新版本進行安裝。

安裝u8g2庫

3. 實驗材料

  • Uno R3開發板
  • 配套USB數據線
  • 麪包板及配套連接線
  • OLED顯示屏

4. 實驗步驟

1. 根據原理圖搭建電路圖。

電路連接與前幾篇相同,使用IIC接口兩線驅動OLED屏。OLED屏的VCC和GND分別連接開發板的3.3V和GND,OLED屏的SDA和SCL分別連接開發板A4和A5。

實驗原理圖如下圖所示:

電路連接圖

實物連接圖如下圖所示:

實物連接圖

2. 在Arduino IDE中,點擊「文件」—「示例」—「U8g2」,會看到官方庫提供了很多的示例程序,我們只需要確定自己屏幕使用的驅動方式和顯示控制器,對應打開屏蔽的構造函數。

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); 

3. 新建sketch,拷貝如下代碼替換自動生成的代碼並進行保存。

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

//iic驅動方式
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   

void setup(void) {
  u8g2.begin();
}

uint8_t m = 24;

void loop(void) {
  char m_str[3];
  strcpy(m_str, u8x8_u8toa(m, 2));    /* convert m to a string with two digits */
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_logisoso62_tn);
    u8g2.drawStr(0,63,"9");
    u8g2.drawStr(33,63,":");
    u8g2.drawStr(50,63,m_str);
  } while ( u8g2.nextPage() );
  delay(1000);
  m++;
  if ( m == 60 )
    m = 0;
}

4. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。

程序下載

5. 實驗現象

本例程使用的是U8g2的page_buffer中的Clock示例,可以看到時間刷新顯示。

實驗現象

6. 相關函數介紹

U8g2庫提供的API函數有很多,這裏簡單介紹幾個比較常用的,更多的介紹可以參考官方手冊

  • u8g2.begin():U8g2構造函數。
  • u8g2.clean():清除屏幕顯示,清除緩衝區,光標回到原點位置。
  • u8g2.setFont():設置字體。
  • u8g2.drawStr():繪製字符串。
  • u8g2.firstPage()/nextPage():循環刷新顯示。

關注微信公衆號:TonyCode
Arduino學習交流羣:868283450

更多內容,歡迎關注我的公衆號。 微信掃一掃下方二維碼即可關注:
掃碼加入微信公衆號:TonyCode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章