OLED SSD1306模块使用示例

本文演示在零知-ESP8266上使用OLED的例子,为后面其他显示相关电子制作打个基础。

一、硬件

需要的模块

零知ESP8266开发板

OLED SSD1306模块

二、连线

接线很简单,I2C接口对应连接即可:

接好后实物图如下:

三、软件

本次使用了OLED相关的软件库,因此需要安装如下两个库:

下载这两个库,然后安装到硬件型号-零知-ESP8266:

Adafruit_SSD1306.zip(点击下载)

Adafruit-GFX.zip(点击下载)

3、然后在零知开发工具中就可以看到SSD1306相关例子,打开它:

该例子核心代码如下:


							
	#include <SPI.h>
	#include <Wire.h>
	#include <Adafruit_GFX.h>
	#include <Adafruit_SSD1306.h>
	  
	#define SCREEN_WIDTH 128 
	#define SCREEN_HEIGHT 64 
	  
	#define OLED_RESET     -1 
	Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
	  
	#define NUMFLAKES     10
	  
	#define LOGO_HEIGHT   16
	#define LOGO_WIDTH    16
	static const unsigned char PROGMEM logo_bmp[] =
	{ B00000000, B11000000,
	  B00000001, B11000000,
	  B00000001, B11000000,
	  B00000011, B11100000,
	  B11110011, B11100000,
	  B11111110, B11111000,
	  B01111110, B11111111,
	  B00110011, B10011111,
	  B00011111, B11111100,
	  B00001101, B01110000,
	  B00011011, B10100000,
	  B00111111, B11100000,
	  B00111111, B11110000,
	  B01111100, B11110000,
	  B01110000, B01110000,
	  B00000000, B00110000 };
	  
	void setup() {
	  Serial.begin(9600);
	    
	  Serial.println("SSD1306 i2c example");
	  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { 
	    Serial.println(F("SSD1306 allocation failed"));
	    for(;;);
	  }
	  display.display();
	  delay(2000); 
	  display.clearDisplay();
	  display.drawPixel(10, 10, WHITE);
	  display.display();
	  delay(2000);
	  testdrawline();     
	  
	  testdrawrect();      
	  
	  testfillrect();      
	  
	  testdrawcircle();    
	  
	  testfillcircle();  
	  
	  testdrawroundrect(); 
	  
	  testfillroundrect(); 
	  
	  testdrawtriangle(); 
	  
	  testfilltriangle(); 
	  
	  testdrawchar();    
	  
	  testdrawstyles();   
	  
	  testscrolltext();   
	  
	  testdrawbitmap();    
	  display.invertDisplay(true);
	  delay(1000);
	  display.invertDisplay(false);
	  delay(1000);
	  
	  testanimate(logo_bmp, LOGO_WIDTH, LOGO_HEIGHT); 
	}
	  
	void loop() {
	}
						

这里注意的是:由于这个OLED模块在不同厂家购买会有一些差别,因此代码中有时候也会需要改动,不然你使用这个代码没有任何反应;一个是复位引脚,这里使用IIC接口不需要复位脚,同时使用的IIC地址是0x3c;具体细节需要咨询你相应购买的厂家。