本示例将使用ESP32驱动ssd1306,将为你介绍SSD1306,接线方式以及如何使用Adafruit_GFX、u8g2两种模式进行开发SSD1306。

本人踩坑了半天,发现Adafruit_SSD1306并不能驱动器LVGL,其并没有实现关键的setAddrWindow和pushColors函数用于display flushing,因此,对于SSD1306,需要采用的u8g2才能驱动起lvgl开发,关于lvgl的驱动方式,在后续的文章中会更新。

SSD1306

SSD1306是一款128*64像素可以使用IIC驱动的OLED屏幕,当然其也有提供SPI的版本,在这里仅展示IIC的版本,两者的差别仅仅是接线方式不同。

SSD1306 Oled显示模块共有4个引脚,标记为GND, VCC, SCL和SDA。这种Oled显示模块可以使用3.3V到5V轻松上电。这是一个低功耗显示模块,可以很容易地与Arduino板使用5伏,也可以使用3.3V控制板,如ESP8266和ESP32等。

就像Arduino Uno Arduino Nano, Nodemcu ESP8266;ESP32还提供I2C总线。GPIO21是SDA, GPIO22是SCL。在接线方式中引脚都清楚地标记,如下图所示。

使用ESP32的GPIO21和GPIO22引脚可以连接多个支持I2C的设备,没有任何问题,因为每个支持I2C的设备都有一个唯一的地址,可以通过使用下面给出的I2C扫描仪代码找到。

u8g2,Adafruit_GFX都是什么?

首先,u8g2和Adafruit_GFX你可以理解为都是抽象层的图形库,不对接的任何屏幕的驱动。但事实上,u8g2内部是提供了驱动的,并且提供了很多屏幕驱动的解决方案,如U8G2_SSD1306_128X64_xxxx类、U8G2_UC1638_192X96_xxxx类,他们都继承了u8g2这个类,可以理解为,如果你想要开发屏幕驱动,你只要继承这个类实现对应的功能就好了。

而Adafruit_GFX也是同理,Adafruit_SSD1306是其对应ssd1306驱动实现版本。

开发准备

硬件准备

  • ESP32
  • SSD1306
  • 4条母对母的杜邦线

接线方式

ESP32的引脚分布可以查看ESP32-DevKitC V4 入门指南,具体的接线如下所示,对应的引脚连接上即可。

开发环境

  • Platformio
  • lvgl v7.11.0 (v8和v7不兼容,需要注意一下,这里我已经导好包了)

Adafruit_GFX开发

Adafruit_GFX开发方式需要用到Adafruit_GFX、Adafruit_SSD1306两个库,Adafruit_GFX是一个GUI的图形图,而Adafruit_SSD1306继承了Adafruit_GFX的属性,做了SSD1306的驱动。

Adafruit_GFX库安装

事实上,在platformio中提供了三种第三方库安装方式,第一种是命令行模式,第二种是在PIO Home中下载,第三种是直接拿下载好的第三方库放进lib目录下,本人倾向于使用命令行,但是这里第一种、第二种都演示一下。

  1. 方法1:命令行

在vscode打开Command Paplette(Ctrl + Shift + P),输入platformio: new terminal,进入终端后,输入以下命令。

pio lib install Adafruit_SSD1306

是不是感觉和pip install很像?

success之后就可以直接开始编写代码了。

  1. 方法2:在PIO Home中下载

我们直接在PIO Home中搜索Adafruit_SSD1306就好了,然后下载下来,添加到对应项目下。

运行

在安装完第三方库之后,直接copy PIO Home给出的示例,编译运行一下你的SSD1306是否可以跑,如果SSD1306显示出内容了,那么恭喜你,你已经成功完成第一步!

u8g2开发

首先先安装对应的u8g2库,直接去PIO Home中搜导入就ok。

下面直接附上代码,详细的开发过程中的一些驱动函数直接看u8g2的官方文档或者参考链接足矣。

PIO Home中的u8g2虽然也有给出示例代码,但是需要改动一些地方,不能直接使用,直接copy以下代码即可。

#include <Arduino.h>
#include <U8g2lib.h>#include <Wire.h># IIC version
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA,U8X8_PIN_NONE);void setup(void) {u8g2.begin();
}void loop(void) {u8g2.firstPage();do {u8g2.setFont(u8g2_font_ncenB14_tr);u8g2.drawStr(0,24,"Hello World!");} while ( u8g2.nextPage() );
}

参考

  • https://www.electroniclinic.com/ -recommend -ssd1306 -esp32 -Adafruit_SSD1306
  • http://www.taichi-maker.com/arduino-oled-application/ -Adafruit_SSD1306
  • https://github.com/adafruit/Adafruit_SSD1306 -Adafruit_SSD1306
  • esp笔记(7)单色OLED(SSD1306) 显示与 u8g2 库的使用 -u8g2 -ssd1306 -csdn
  • 玩转u8g2 OLED库,一篇就够 -u8g2 -ssd1306 -csdn
  • https://github.com/AhmadRoshanfar/port-oled-ssd1306-lvgl-esp32/ -idf

《ESP32》Adafruit_GFX、u8g2驱动ssd1306相关推荐

  1. ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示

    ESP32基于Arduino框架下U8g2驱动I2C OLED时间显示

  2. esp32使用MicroPython驱动oled屏显示中文和英文

    文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...

  3. 乐鑫Esp32学习之旅28 分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,扩大容量存储更多的资源。(开源源码工程)。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

  4. ESP32开发之旅——ssd1306 OLED屏的使用

    ESP32开发之旅--ssd1306 OLED屏的使用 前言 在本文中,您将学会ssd1306 OLED屏在ESP32中的使用,本文提供了简单的示例供学习参考. 需要注意的是,本文中的ESP32是使用 ...

  5. 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  6. STM32—4线SPI驱动SSD1306 OLED

    文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...

  7. ESP32学习】驱动ws2812

    [ESP32学习]驱动ws2812 说明 先介绍WS2812b RTOS理解学习 ESP32驱动WS2812代码 说明 本片文章不做详细介绍,博主本身学习程度不高,没有系统学过FreeRtos操作系统 ...

  8. 【Renesas RA6M4开发板之I2C(模拟)驱动ssd1306 OLED屏幕】

    [Renesas RA6M4开发板之I2C(模拟)驱动ssd1306 OLED屏幕] 1.0 OLED 1.1产品特性: 1.2产品参数: 2. RT-theard配置 2.1 硬件需求 2.2 软件 ...

  9. 联盛德 HLK-W806 (六): I2C驱动SSD1306 128x64 OLED液晶屏

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

最新文章

  1. threeJS 中数学相关内容
  2. 《中国人工智能学会通讯》——4.27 电子数据取证理论与技术
  3. git--分支管理策略
  4. 解决element-ui中el-menu组件作为vue-router模式在刷新页面后default-active属性与当前路由页面不一致问题的方法...
  5. 计算机二级python选择题知识点,全国计算机等级考试二级Python练习题库-选择题部分.pdf...
  6. jQuery如何选择表格每行中的第三列?
  7. 2019.02.09 bzoj4455: [Zjoi2016]小星星(容斥原理+dp)
  8. oracle客户端改字符集没有用,ORACLE客户端乱码 修改Oracle客户端字符集
  9. Instance2:login interface
  10. Web图形开发方案选型,SVG/VML/Flash/Applet优劣比较
  11. 需要大量设计的软件如何进行敏捷开发
  12. Could not retrieve transaction read-only status from server
  13. 【格雷码】LeetCode 89. Gray Code
  14. 计算机网络数据链路层之其基础概述
  15. 有什么软件可以测试汽车的噪音,汽车噪声测试,汽车通过噪声测试
  16. 免费申请ssl证书并部署
  17. 飞腾D20008核桌面处理器
  18. 写给冬天里开放的那些花儿
  19. 量化投资学习——经济周期
  20. 室内外实时一体化建模

热门文章

  1. 2021年9月22日-忆阻神经网络综述
  2. 破解Android app的过程记录
  3. 4种Java引用浅解
  4. GDP大跳水,“溢价阶层,春招我借这份PDF的复习思路
  5. C语言写的一个简单的计算器
  6. 什么是大数据lambda架构
  7. 微信小程序picker组件
  8. mysql 小版本直接升级
  9. vue 图片转base64格式的方法
  10. 一文彻底读懂三极管的工作原理,最通俗的解释,看完就明白了!