《ESP32》Adafruit_GFX、u8g2驱动ssd1306

news2024/12/28 6:26:35

本示例将使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络编程】第四章 网络套接字(守护进程+TCP英译汉+TCP通协议讯流程+TCP和UDP对比)

&#x1f3c6;个人主页&#xff1a;企鹅不叫的博客 ​ &#x1f308;专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接&#xff1a;代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

[Java]注解

文章目录⚽ 注解的概述⚽ 常见注解的使用示例&#x1f3d0; 文档相关的注解&#x1f3d0; 在编译时进行格式检查(JDK内置的三个基本注解)&#x1f3d0; 跟踪代码依赖性&#xff0c;实现替代配置文件功能⚽ 自定义注解⚽ JDK中的元注解&#x1f3d0; Retention&#x1f3d0; Tar…

【PowerDesign】制作数据流图

目录 文章目录 前言 一、下载软件 二、使用步骤 1.打开面板 2.绘制顶层0层/数据流程图 创建加工 画出数据流向 对格式进行设置 结果展示 2. 1层数据流程图 生成子加工 框图格式设置 结果展示 注意事项 3. 2层数据流程图 总结 前言 本文以图书管理系统举例&…

java开发的环保网站垃圾分类系统源码

本项目是基于springboot开发的小区垃圾分类的监管系统。为了更好的督促小区业主更好的进行垃圾分类和垃圾投放&#xff0c;本系统设计了一套积分奖罚机制&#xff0c;如果业主此次投放垃圾符合分类要求则加10积分&#xff0c;不符合则扣除200积分&#xff0c;积分不够需要进行扫…

东北大学c++实验最后一次

【问题描述】 建立两个磁盘文件f1.txt和f2.txt&#xff0c;编写程序实现以下工作&#xff1a; &#xff08;1&#xff09;从文件in.txt输入20个整数&#xff0c;分别存放在两个磁盘文件f1.txt和f2.txt中&#xff08;每个文件中放10个整数&#xff09;&#xff1b; &#xff…

【java】java集合详解

目录一.集合类型二.集合的不同三.List解析1.ArrayList2.LinkedList3.Vector四.Set解析1.HashSet2.TreeSet3.LinkedHashSet五.Map解析1.HashMap2.TreeMap3.HashTable4.ConcurrentHashMap一.集合类型 集合类型和关系(我画的比较简略&#xff0c;其中有很多继承实现关系都没有画),…

Web入门开发【三】- 准备工作

欢迎来到霍大侠的小院&#xff0c;我们来学习Web入门开发的系列课程。 首先我们来了解下这个课程能学到什么&#xff1f; 1、你将可以掌握Web网站的开发全过程。 2、了解基础的HTML&#xff0c;CSS&#xff0c;JavaScript语言。 3、开发自己的第一个网站。 4、认识很多对编…

刷爆力扣之字符串转换整数(atoi)

刷爆力扣之字符串转换整数(atoi) HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&a…

1、移动端基础

目录1、常见浏览器PC端移动端2、手机屏幕3、移动端调试方法4、视口4.1 布局视口 layout viewport4.2 视觉视口visual viewport4.3 理想视口 idea viewport **meta视口标签5、二倍图1、物理像素和物理像素比6、多倍图7 背景缩放background-size移动端背景图展示8、移动端主流方案…

IDEA创建kotlin项目

今天新建了一个kotlin项目&#xff0c;竟然不能导入jar包&#xff0c;原因是新建项目的时候&#xff0c;选择了kotlin作为Gradle的开发语音&#xff0c;kotlin语音里面&#xff0c;下面这行配置识别不了&#xff1a; implementation fileTree(dir: libs, include: [*.jar])所以…

【蓝桥杯】第10届Scratch国赛第6题程序2 -- 捉迷藏

[导读]&#xff1a;蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事。蓝桥杯大赛首席专家倪光南院士说&#xff1a;“蓝桥杯以考促学&#xff0c;塑造了领跑全国的人才培养选拨模式&#xff0c;并获得了行业的深度认可。” 春雷课堂计划推出Scratch蓝桥杯…

青龙面板搭建+QQ机器人

搭建青龙面板首先有个服务器 我这里看到华为云有活动就入手了一个 1.系统选择 centos7.9 华为云购买地址&#xff1a;https://activity.huaweicloud.com/1212_promotion/index.html 2. 服务器上安装宝塔 yum install -y wget && wget -O install.sh http://downl…

340页11万字智慧政务大数据资源平台数据治理方案

一.1.1 数据治理子系统 建设大数据治理子平台&#xff0c;提供数据标准管理、元数据管理、数据质量管理能力&#xff0c;实现对数据的规范治理与管理&#xff1b;提供数据工厂能力&#xff0c;实现对归集的数据进行清洗、加工&#xff0c;支撑业务的数据应用需求。具体&#xf…

ES6 箭头函数 Arrow Function

前言 1. ES6 前定义函数 2. ES6 箭头函数语法 3. ES6 箭头函数返回值 4. 箭头函数中的 this 到底是谁 ? 前言 ES6 新增了一种新的函数: 箭头函数 Arrow Function 箭头函数相当于匿名函数&#xff0c;简化了函数定义&#xff0c;将原函数的 function 关键字和函数名都删掉&am…

学习.NET MAUI Blazor(三)、创建.NET MAUI Blazor应用并使用AntDesignBlazor

大致了解了Blazor和MAUI之后&#xff0c;尝试创建一个.NET MAUI Blazor应用。 需要注意的是&#xff1a; 虽然都叫MAUI&#xff0c;但.NET MAUI与.NET MAUI Blazor 并不相同&#xff0c;MAUI还是以xaml为主&#xff0c;而MAUI Blazor则是以razor为主。 这个系列还是以MAUI Bla…

23. 【gRPC系列学习】gRPC安全认证-JWT认证

JWT 即 JSON Web Token,是用 JSON 形式安全传输信息的方法。本节介绍JWT与gRPC结合,关于JWT交互流程的介绍参考文末的链接。 1. 使用JWT客户端与服务端交互 1)客户端使用用户名、密码发送给服务端 2)服务端返回JWT数据,返回数据由三部分组成 Header:TOKEN 的类型,就是JW…

截至2022年12月共计451个信息安全国家标准 汇总

写在前面 早年刚参加信息安全工作更多的学点皮毛技术&#xff0c;到处找安全工具&#xff0c;跟踪poc&#xff0c;拿到一个就全网扫一遍&#xff0c;从来没有想过&#xff0c;系统化的安全工作应该怎样搞?我做的工作在安全体系中处于哪个阶段? 后来有机会做企业安全建设&…

二本跨专业自学编程及程序员就业之路——20W社招进银行

自学编程的道路 先做个自我介绍&#xff0c;我是一名普通二本院校的学生。在广州上学&#xff0c;21年毕业&#xff0c;非科班出身。上大学之前&#xff0c;很少接触电脑&#xff0c;连QQ都是别人送我的&#xff0c;当时还开心了好一阵子。 大学的时候&#xff0c;开始接触的第…

对美国学校制度的一点儿思考

本文作者在美国生活了几十年&#xff0c;随着对这个国家的深入了解&#xff0c;发现原来对美国的一些认知上有偏差。所以其根据在美的所见所闻&#xff0c;结合中国国内的情况&#xff0c;做了分析对照&#xff0c;在此知识人网小编仅摘录关于美国学校制度的内容以飨读者。 美国…

喜报 | 知道创宇ZoomEye Pro获评ISC 2022创新能力百强,实力入选“攻击面与资产管理领域”创新产品榜单!

12月21日&#xff0c;ISC 2022数字安全创新能力百强颁奖典礼在北京举行。 知道创宇的 ZoomEye Pro 以其先进的网络安全技术和创新产品能力&#xff0c;通过层层筛选&#xff0c;从众多产品中脱颖而出&#xff0c;入选“攻击面与资产管理领域”的创新产品榜单&#xff01;知道创…