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() { }