ESP32—OLED多功能日历时钟(原理到实物学习总结)
·
1.OLED基础知识
- 用1.3英寸
- 驱动芯片为SH1106
- 接口使用:I2C以及SPI接口
- 分享链接:OLED时钟
2.OLED驱动库
- 基于Arduino框架驱动OLED我们使用U8G2 库(覆盖范围广)
- GitHub地址
3.esp32驱动IIC_OLED屏幕
- VCC连接学习板3.3V
- GND连接GND
- SCK(serial clock input)连接23引脚
- SDA(serial data input)连接22引脚
CLion里面的设置:
- 去B站上面搜CLion配置PlatformlO

- 选中PlatformlO搜索框输入espressif esp32dev然后选择arduino再创建即可
- 打开PlatformlO Home去添加U8G2库

- 看图操作添加u8g2库,最后刷新PlatformlO Home平台即可



代码书写:

- 解释代码:

上述代码中的缓存模式有:1,2,F三种选项,解释:
- 其中1:垂直方向从上往下分页,每一页高度为8个像素。因为宽是64,故分成八页
- 同上逻辑4页
- 1页,因为F为全缓存
- 因此我们代码中:

4.硬件I2C与软件I2C
- SW和HW相关的函数,在u8g2库里面书写好了,直接来拿使用即可
- 其中SW主要是模拟scl和sda信号时序
- 区别:SW速度慢,但是引脚可多变,而HW芯片手册有指定引脚,引脚用了其他功能就不能用I2C。函数的参数不一样改变顺序了,函数内部实现逻辑一样
5.ESP32驱动SPI OLED屏
- SPI是什么?答:SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工的同步串行通信协议
- 特点:同步通信:通过时钟信号(SCK)同步数据传输,速率较高(通常可达几 Mbps 到几十 Mbps)。全双工:可同时进行数据发送和接收(主机→从机、从机→主机双向传输)
关键引脚(四线制):
-
SCK(Serial Clock):主机产生的时钟信号,控制数据传输节奏。
-
MOSI(Master Out Slave In):主机向从机发送数据的信号线。
-
MISO(Master In Slave Out):从机向主机返回数据的信号线(全双工时使用)。
-
CS(Chip Select):主机通过该信号选中特定从机(低电平有效为主),未选中的从机不响应。
-
其中由于OLED只需要主机向从机发送数据,故只需要MOSI(新命名:SDA)
其他引脚:
- GND
- VDD:范围3.3-5V
- RES:对屏幕进行复位的引脚
- DC:传输数据类型选择引脚,用于标识Data/Command的

- 引脚连接:
6.软件SPI驱动OLED屏
-
主要修改U8G2的那行代码,但是速度远不及硬件驱动
-

-
注意其中的驱动芯片是SH1106,不要搞错了,不然屏幕会有杂物
7.屏幕旋转

- 在创建u8g2的时候可以指定屏幕旋转方向:
- 有以下几个选择:
- U8G2_R0:不旋转,使用默认屏幕方向
- U8G2_R1:逆时针旋转90度
- U8G2_R2:逆时针旋转180°
- U8G2_R3:逆时针旋转270°
- U8G2_MIRROR:水平镜像
- U8G2_MIRROR_VERTICAL:垂直镜像
8.u8g2字体介绍
- 中文字体:常用文泉驿字体(wqy),字体中包含chinese或者gb2312就可以显示中文,其中chinese和gb2312是字符集,在哪个位置用?一般在setup里面使用


- 直接在u8g2.setFont里面进行字体的设置即可,需要在firstPage这个结构中使用
9.u8g2显示图标
- 代码展示:


10.OLED显示图片
- 这里需要一个字模提取的网站,去把我们的图片的信息划分成一个数组
- 字模提取
- 选择一张图片,大小选择64*64,为啥?因为我们的OLED屏幕宽是64,为了显示好看,长只能也取64


11.ESP32进行联网
- 需要包含WiFi.h文件

- 联网可以干啥?
- 实时显示当前日期与时间:NTP功能,需要包含头文件和创建一个新的类

- 通过HTTP接口获取名言显示,需要需要包含头文件和创建一个新的类,在loop函数里面获取和打印HTTP对应的网站语句,在setup里面进行联网,自定义display函数是设置相关u8g2的库函数显示OLED屏幕上面,在loop函数里面也可以解析json格式的数据来进行显示

12.阶段一学习总结
- 学会了使用u8g2库以及http和json相关的库使用,代码板块的理解
13.项目脑图分析
14.原理图和pcb的绘制
更多推荐




所有评论(0)