ESP8266驅動OLED顯示屏。使用SPI協議將單色7引腳SSD1306 0.96 OLED顯示屏與NodeMCU連接,學習其基本的使用。
OLED顯示屏
有機發光二極管(Organic Light Emitting Diode,OLED)是一種發光二極管,其中由有機化合物製成的發光層在供應電流時發光。該層放置在兩個電極之間。該技術用於計算機、電視、智能手機等顯示屏。OLED顯示器具有自己的光,不需要像LCD那樣的任何背光,因此它們是節能的並且與許多微控制器一起使用。在LCD上使用OLED顯示器的另一個優點是在OLED上顯示大量且更好的圖形質量。
市場上有各種各樣的OLED顯示器。這些顯示器的特徵在於顏色、引腳數、控制器IC和屏幕尺寸。在基礎顏色上,OLED有單色藍色,單色白色和黃色/藍色可供選擇。通信方式上,主要有兩種類型的OLED - 3pin和7pin。 3引腳OLED可用於I2C通信模式,7引腳OLED可用於SPI模式或I2C模式。
7腳OLED實物圖:
使用代碼,參考修改零知開源,代碼僅供學習,需要安裝相應的庫函數。
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED顯示寬度(像素)
#define SCREEN_HEIGHT 32 // OLED顯示高度(像素)
// 使用軟件SPI連接的SSD1306顯示器聲明(默認情況下):
#define OLED_MOSI 5 //DI ------ D1
#define OLED_CLK 4 //D0 ------- D2
#define OLED_DC 14 //DC ------- D5
#define OLED_CS 12 //CS ------- D6
#define OLED_RESET 13 //RES -------D7
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = 內部產生3.3V的顯示電壓
if(!display.begin(SSD1306_SWITCHCAPVCC)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // 不要繼續,一直循環
}
//在屏幕上顯示初始顯示緩衝區內容庫用Adafruit啓動屏幕初始化。
display.display();
// 清空緩衝區
display.clearDisplay();
// 用白色繪製單個像素
display.drawPixel(10, 10, WHITE);
// 在屏幕上顯示顯示緩衝區。必須在繪製命令後調用display(),使其在屏幕上可見!
display.display();
delay(2000);
}
void loop() {
testdrawstyles();
delay(2000);
}
void testdrawstyles(void) {
display.clearDisplay();
display.setTextSize(1); // 正常1:1像素比例
display.setTextColor(WHITE); // 繪製白色文本
display.setCursor(0,0); // Start at top-left corner
display.println(F("Qing Ye Mu Rong !"));
display.setTextColor(BLACK, WHITE); // Draw 'inverse' text
display.println(202059);
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(WHITE);
display.print(F("0x")); display.println(0xDEADBEEF, HEX);
display.display();
delay(2000);
}
效果圖: