一、簡介
??之前我們成功驅(qū)動了LCD12864和LCD1602, 這次我們來驅(qū)動oled12864。OLED和LCD有什么不同呢?主要是發(fā)光方式的不同, OLED每個像素點都是主動發(fā)光, LCD則是依靠背光才能發(fā)光。當(dāng)然這些對大多數(shù)人來說不重要, 我們作為使用者主要是使用顯示器進(jìn)行信息的顯示, 而不是弄懂底層原理設(shè)計屏幕是吧。
??需要注意的是我這里使用的OLED的驅(qū)動是SH1106, 但是大多數(shù)屏幕都是SSD1306, 不過得益于u8g2良好的封裝, 我們只需在定義數(shù)據(jù)的時候做一點改變即可赃额。
??這是我的一塊OLED??
二、引腳定義
編號 | 絲印/符號 | 引腳說明 |
---|---|---|
1 | GND | 電源地 |
2 | VCC | 電源正極,實測5V系統(tǒng)和3.3V系統(tǒng)均可 |
3 | SCL | SPI時鐘信號 |
4 | SDA | SPI數(shù)據(jù)信號 |
5 | RST | 復(fù)位 |
6 | D/C | 數(shù)據(jù)/命令 |
三叫确、應(yīng)用電路, 主控為esp8266
在arduino開發(fā)環(huán)境中不能直接用GPIO的編號, 可以可以參考下圖??
例如應(yīng)用電路中SCL連接的為GPIO13, 從上圖中我們可以找到GPIO13對應(yīng)的為D7, 在代碼中這個引腳的編號也就為D7
四跳芳、驅(qū)動代碼
#include <U8g2lib.h> //這個庫需要自己安裝, 不會請看后面
/*如果你的顯示器不是SH1106這個驅(qū)動芯片, 到支持的驅(qū)動芯片列表中尋找定義方式, 修改下面這行↓*/
U8G2_SH1106_128X64_NONAME_1_4W_SW_SPI u8g2(/*顯示方向*/U8G2_R0, /*clock/SCL*/D7, /*data/SDA*/D6, /*cs*/U8X8_PIN_NONE ,/*DC*/D0 ,/*reset/RST*/D5);//創(chuàng)建顯示器實例
void setup() {
u8g2.begin(); //顯示器初始化
}
void loop(void) {
u8g2.firstPage(); //此為顯示循環(huán), 更加詳細(xì)的內(nèi)容可以參照下面給出的鏈接
do {
u8g2.setFont(u8g2_font_ncenB14_tr); //設(shè)置字體
u8g2.drawStr(0,20,"MadonG"); //在指定位置顯示字符 MadonG
} while ( u8g2.nextPage() );
delay(1000);
}
- 需要注意的是, 如果你的顯示器的驅(qū)動芯片不是SH1106, 那么你需要更改數(shù)據(jù)結(jié)構(gòu)定義部分, 詳細(xì)請點擊?? 支持的驅(qū)動芯片列表
- 如果你的顯示器缺少了數(shù)據(jù)定義的時候需要的引腳, 例如我的顯示器沒有CS引腳, 則傳入 U8X8_PIN_NONE 表示沒有這個引腳
- 如果你想構(gòu)造更加復(fù)雜的圖像, 更多u8g2庫的相關(guān)操作請點擊??深入學(xué)習(xí)Arduino u8g2 OLED庫,一篇就夠
- 如果還不會在ArduinoIDE中安裝庫文件, 點擊??Arduino IDE如何安裝庫文件