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);
}
效果图: