ESP32做一个电子手表(一) 点亮OLED屏幕
前期准备
ESP32开发板 * 1
0.96寸OLED屏幕 * 1
一、库函数介绍
使用的是Wire.h库
使用方法:
- 引入库
#include "SSD1306Wire.h"
- 实例化一个SSD1306Wire对象
SSD1306Wire display(0x3c,22,21);//0x3c是oled的地址,22为SDA,21为SCl
- 初始化屏幕
display.init();
- 显示和清除
display.clear();
display.display();
- 清除某个点
display.clearPixel(x,y);
- 把显示屏关掉/打开:
display.diapalyOff();
display.dispalyOn();
- 深度睡眠后恢复
display.allocateBuffer();
- 绘制字符串
display.drawString(0,0,"hello");
- 屏幕垂直翻转
display.flipScreenVertically();
- 屏幕镜像显示
display.mirrorScreen();
- 画进度条
display.drawProgressBar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t progress);//(x,y,width,height,进度)
- 设置字体
display.setFont(const uint8_t *fontData)
内建字体 字高 字宽 包含字符
ArialMT_Plain_10 13 10 224个字符
ArialMT_Plain_16 19 16 224个字符
ArialMT_Plain_24 28 24 224个字符
- 设置一个点
display.setPixel(int16_t x, int16_t y)
- 画空心圆
display.drawCircle(int16_t x, int16_t y, int16_t radius)
- 画实心圆
display.fillCircle(int16_t x, int16_t y, int16_t radius)
- 画1/4圆弧
quads是角度
display.drawCircleQuads(int16_t x0, int16_t y0, int16_t radius, uint8_t quads)
- 画水平线
display.drawHorizontalLine(int16_t x, int16_t y, int16_t length)
- 画垂直线
display.drawVerticalLine(int16_t x, int16_t y, int16_t length)
- 画线
display.drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1)
- 画空心矩形
display.drawRect(int16_t x, int16_t y, int16_t width, int16_t height)
- 画实心矩形
display.fillRect(int16_t x, int16_t y, int16_t width, int16_t height)
- 显示16*16的图标 :建议使用PCtoLCD
display.drawIco16x16(int16_t x, int16_t y, const char *ico, bool inverse = false)
- 显示XBM图像
display.drawXbm(int16_t x, int16_t y, int16_t width, int16_t height, const uint8_t *xbm)
- 显示BMP位图图像:可以用于显示中文
display.drawFastImage(int16_t x, int16_t y, int16_t width, int16_t height, const uint8)
二、代码示例
#include "SSD1306Wire.h"
#include <Wire.h>
SSD1306Wire display(0x3c,22,21);//0x3c是oled的地址,22为SDA,21为SCl
void setup() {
//oled初始化
display.init();
display.clear();
display.display();
display.mirrorScreen();//镜像显示
display.flipScreenVertically();//垂直翻转
}
void loop() {
// put your main code here, to run repeatedly:
display.drawString(0,0,"HELLO,WORLD!");
display.display();
}
三、引脚图
- 由于oled屏幕为IIC通信方式,我们找到芯片的SCL,SDA引脚接到对应的屏幕上的SCL和SDA脚上。
屏幕的VCC则接到芯片的3V3引脚,GND接GND引脚即可。