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里面的设置:

  1. 去B站上面搜CLion配置PlatformlO
  2. 选中PlatformlO搜索框输入espressif esp32dev然后选择arduino再创建即可
  3. 打开PlatformlO Home去添加U8G2库
  4. 看图操作添加u8g2库,最后刷新PlatformlO Home平台即可

代码书写:

  1. 解释代码:

上述代码中的缓存模式有:1,2,F三种选项,解释:

  1. 其中1:垂直方向从上往下分页,每一页高度为8个像素。因为宽是64,故分成八页
  2. 同上逻辑4页
  3. 1页,因为F为全缓存
  4. 因此我们代码中:

4.硬件I2C与软件I2C

  • SW和HW相关的函数,在u8g2库里面书写好了,直接来拿使用即可
  • 其中SW主要是模拟scl和sda信号时序
  • 区别:SW速度慢,但是引脚可多变,而HW芯片手册有指定引脚,引脚用了其他功能就不能用I2C。函数的参数不一样改变顺序了,函数内部实现逻辑一样

5.ESP32驱动SPI OLED屏

  • SPI是什么?答:SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工的同步串行通信协议
  • 特点:同步通信:通过时钟信号(SCK)同步数据传输,速率较高(通常可达几 Mbps 到几十 Mbps)。全双工:可同时进行数据发送和接收(主机→从机、从机→主机双向传输)

关键引脚(四线制):

  1. SCK(Serial Clock):主机产生的时钟信号,控制数据传输节奏。

  2. MOSI(Master Out Slave In):主机向从机发送数据的信号线。

  3. MISO(Master In Slave Out):从机向主机返回数据的信号线(全双工时使用)。

  4. CS(Chip Select):主机通过该信号选中特定从机(低电平有效为主),未选中的从机不响应。

  5. 其中由于OLED只需要主机向从机发送数据,故只需要MOSI(新命名:SDA)

其他引脚:

  1. GND
  2. VDD:范围3.3-5V
  3. RES:对屏幕进行复位的引脚
  4. DC:传输数据类型选择引脚,用于标识Data/Command的

  • 引脚连接:

6.软件SPI驱动OLED屏

  • 主要修改U8G2的那行代码,但是速度远不及硬件驱动

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

7.屏幕旋转

  • 在创建u8g2的时候可以指定屏幕旋转方向:
  • 有以下几个选择:
  1. U8G2_R0:不旋转,使用默认屏幕方向
  2. U8G2_R1:逆时针旋转90度
  3. U8G2_R2:逆时针旋转180°
  4. U8G2_R3:逆时针旋转270°
  5. U8G2_MIRROR:水平镜像
  6.  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文件
  • 联网可以干啥?
  1. 实时显示当前日期与时间:NTP功能,需要包含头文件和创建一个新的类
  2. 通过HTTP接口获取名言显示,需要需要包含头文件和创建一个新的类,在loop函数里面获取和打印HTTP对应的网站语句,在setup里面进行联网,自定义display函数是设置相关u8g2的库函数显示OLED屏幕上面,在loop函数里面也可以解析json格式的数据来进行显示

12.阶段一学习总结

  • 学会了使用u8g2库以及http和json相关的库使用,代码板块的理解

13.项目脑图分析

14.原理图和pcb的绘制

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐