《ESP32》Adafruit_GFX、u8g2驱动ssd1306
本示例将使用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:命令行
在vscode打开Command Paplette(Ctrl + Shift + P),输入platformio: new terminal
,进入终端后,输入以下命令。
pio lib install Adafruit_SSD1306
是不是感觉和pip install很像?
success之后就可以直接开始编写代码了。
- 方法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相关推荐
- ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示
ESP32基于Arduino框架下U8g2驱动I2C OLED时间显示
- esp32使用MicroPython驱动oled屏显示中文和英文
文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...
- 乐鑫Esp32学习之旅28 分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,扩大容量存储更多的资源。(开源源码工程)。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...
- ESP32开发之旅——ssd1306 OLED屏的使用
ESP32开发之旅--ssd1306 OLED屏的使用 前言 在本文中,您将学会ssd1306 OLED屏在ESP32中的使用,本文提供了简单的示例供学习参考. 需要注意的是,本文中的ESP32是使用 ...
- 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- STM32—4线SPI驱动SSD1306 OLED
文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...
- ESP32学习】驱动ws2812
[ESP32学习]驱动ws2812 说明 先介绍WS2812b RTOS理解学习 ESP32驱动WS2812代码 说明 本片文章不做详细介绍,博主本身学习程度不高,没有系统学过FreeRtos操作系统 ...
- 【Renesas RA6M4开发板之I2C(模拟)驱动ssd1306 OLED屏幕】
[Renesas RA6M4开发板之I2C(模拟)驱动ssd1306 OLED屏幕] 1.0 OLED 1.1产品特性: 1.2产品参数: 2. RT-theard配置 2.1 硬件需求 2.2 软件 ...
- 联盛德 HLK-W806 (六): I2C驱动SSD1306 128x64 OLED液晶屏
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
最新文章
- threeJS 中数学相关内容
- 《中国人工智能学会通讯》——4.27 电子数据取证理论与技术
- git--分支管理策略
- 解决element-ui中el-menu组件作为vue-router模式在刷新页面后default-active属性与当前路由页面不一致问题的方法...
- 计算机二级python选择题知识点,全国计算机等级考试二级Python练习题库-选择题部分.pdf...
- jQuery如何选择表格每行中的第三列?
- 2019.02.09 bzoj4455: [Zjoi2016]小星星(容斥原理+dp)
- oracle客户端改字符集没有用,ORACLE客户端乱码 修改Oracle客户端字符集
- Instance2:login interface
- Web图形开发方案选型,SVG/VML/Flash/Applet优劣比较
- 需要大量设计的软件如何进行敏捷开发
- Could not retrieve transaction read-only status from server
- 【格雷码】LeetCode 89. Gray Code
- 计算机网络数据链路层之其基础概述
- 有什么软件可以测试汽车的噪音,汽车噪声测试,汽车通过噪声测试
- 免费申请ssl证书并部署
- 飞腾D20008核桌面处理器
- 写给冬天里开放的那些花儿
- 量化投资学习——经济周期
- 室内外实时一体化建模