Arduino学习笔记:Adafruit_SSD1306——OLED学习

Adafruit_SSD1306——OLED实体图:

由图可见:OLED一共有4个引脚,从左到右以此是GND、VCC、SCL、SDA,分别代表接地引脚、接电源引脚、SCL引脚用于获取I2C的时钟信号、SDA引脚用于传输数据。

利用ESP8266控制OLED显示器的接线图:

OLED显示原理:

OLED其实就是一个MxN的像素点阵,需要显示什么就得把具体坐标位置对应的像素点点亮。

支持OLED显示的主要函数库:
#include <U8g2lib.h> //U8g系列的函数库功能强大且齐全 
#include<Wire.h> //I2C的引脚由该库定义 
#include <Adafruit_GFX> //该库定义了一系列绘画的方法,属于基础类库 
#include <Adafruit_SSD1306>//以GFX为基础,专门用于SSD1306芯片的驱动库,主要用于画图

由于OLED本地没有支持中文汉字的文字库函数,所以若想在显示器上显示中文字体,则需要用到汉字取模软件。用字模工具取模显示,取模方式:C51格式,横向取模,取16X16汉字字模 ,逐行式 ,顺向高位在前。
首先进行取模方式的设置:

再进行汉字取模,以“国“字为例。

点阵生产区就是该汉字的点阵表示,只需将OLED上的对应像素点点亮即可在OLED显示器上显示该汉字。
全部代码如下:(注意在运行该代码前要在库管理处引入对应的库函数,且选对开发板型号和接对线,博主这里用的是ESP32)

/* OLED显示汉字 */
//#include <U8g2lib.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
//用字模工具取模显示,取模方式:C51格式,横向取模
//取16X16汉字字模 逐行式 顺向高位在前
static const unsigned char PROGMEM str1[] =
{
   
/*-- 文字: 国 --*/
/*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x5F,0xF4,0x41,0x04,0x41,0x04,0x4F,0xE4,
0x41,0x04,0x41,0x44,0x41,0x24,0x5F,0xF4,0x40,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,
};
void setup() {
   
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextColor(WHITE);//开像素点发光
  display.clearDisplay();//清屏
  display.setTextSize(1); //设置字体大小
  display.setCursor(0, 0);//设置显示位置 
  //第一个参数控制距离左边界的位数,第二个参数控制距离上边界的位数,第三个参数是所要显示的字符,
  //第四个参数和第五个参数规定了占用范围,
  //对于汉字来说16X16的点阵才能完整显示一个汉字,一个汉字2个字节16个位,第五个参数是字体的大小
  display.drawBitmap(0, 0, str1, 16, 16, 1); //画出字符对应点阵数据
  display.display();//开显示

}

void loop() {
   

}
成果图和接线图: