ESP32-IPS彩屏ST7789-Arduino-简单驱动

news2024/11/19 8:36:36

目的:

使ESP32能够驱动点亮ST7789显示屏

前提条件:

ESP32

ST7789 (240 x240,IPS)

杜邦线

Arduino

过程:

0x00--接线

0x01--驱动:

彩屏驱动库

针对不同的彩屏驱动芯片,常用的 Arduino 彩屏驱动库也有很多种选择,在 Arduino IDE 的库管理器中,搜索“TFT”就可以看到许多彩屏驱动库,比如:

Arduino-ST7789-Library:https://github.com/ananevilya/Arduino-ST7789-Library

Adafruit-ST7735-Library:https://github.com/adafruit/Adafruit-ST7735-Library

TFT_eSPI:https://github.com/Bodmer/TFT_eSPI

本教程使用的库是 TFT_eSPI,选择这个库的原因有:

该库在 GitHub 上 Star 的人数比较多,而且至今还在保持活跃地更新,所以可靠性、专业型比较有保证;

支持各种常用的驱动芯片,比如 ST7735、ST7789、ILI9341 等,兼容性比较好;

据说这个库的性能也是最出色的。这里我没有详细考究与测试,而且对大部分用户来说也不重要。

在 Arduino 中打开库管理器,搜索 TFT_eSPI,然后点击安装即可。

0x02 -- 配置文件修改

使用Everyting 搜索User_Setup.h,然后使用vscode打开。记事本也可以。

简单点亮st7789 无需调用Arduino\libraries\TFT_eSPI\User_Setups这一目录下的Setup135_ST7789.h。

主要修改内容:

#define USER_SETUP_INFO "User_Setup"


#define ST7789_DRIVER


 #define TFT_SDA_READ

 #define TFT_RGB_ORDER TFT_RGB

#define TFT_WIDTH  240

#define TFT_HEIGHT 240

// For ESP32 Dev board (only tested with ST7789 display)

// 节点定义

#define TFT_MISO 19

#define TFT_MOSI 23

#define TFT_SCLK 18

#define TFT_CS    15  // Chip select control pin

#define TFT_DC    2  // Data Command control pin

#define TFT_RST   4  // Reset pin (could connect to RST pin)

#define TFT_BL   32


#不要的字体可以去掉,会占用空间

#define LOAD_GLCD  

#define LOAD_FONT2 

#define LOAD_FONT4 

#define LOAD_FONT6

#define LOAD_FONT7 

#define LOAD_FONT8 

//#define LOAD_FONT8N

#define LOAD_GFXFF

#define SMOOTH_FONT


#define SPI_FREQUENCY  27000000

#define SPI_READ_FREQUENCY  20000000

#define SPI_TOUCH_FREQUENCY  2500000
 

// 其他暂不需要,可以备份源文件后,直接新建替换。

验证:

Arduino  菜单栏→文件→示例→TFT_eSPI

之后就可以看到屏幕点亮了。恭喜你!

其他:

0x00:

可能在测试的时候发现屏幕上某些颜色很奇怪,比如设置字体为蓝色但显示红色。原因是在ST7789芯片中MADCTL (36h)寄存器的第3位控制像素颜色顺序,当该位为0时颜色按R-G-B显示,当该位为1时按B-G-R显示:

Bit D3- RGB/BGR Order

“0” = RGB (When MADCTL D3=”0”)

“1” = BGR (When MADCTL D3=”1”)

 出现这种问题时可以在User_Setup.h中取消掉下面某一行的注释,来控制颜色顺序

#define TFT_RGB_ORDER TFT_BGR

引用:

ESP32 + Arduino使用TFT_eSPI库(LCD驱动芯片ST7789) - XXX已失联 - 博客园

https://www.cnblogs.com/21207-iHome/p/16005438.html

ESP32-CAM之ST7789图像显示_framesize_qqvga-CSDN博客

ESP32-CAM之ST7789图像显示_framesize_qqvga-CSDN博客

Connecting and Configuring the ST7789 LCD SPI Display to the ESP32 - YouTube

https://www.youtube.com/watch?v=HoZhgNcJjNA

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

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

相关文章

Java中的数组

前言: 本篇博客将为大家介绍Java中的数组的相关知识。 目录 基本介绍 概念相关 数组的使用 数组是引用类型 应用场景 保存数据 作为方法的参数 作为方法的返回值 练习 数组转字符串 数组拷贝 求数组中元素的平均值 查找数组中的指定元素(二…

传输线感性耦合和距离的关系

传输线感性耦合和距离的关系 传输线感性耦合是指两条或多条传输线之间由于磁场或电场的相互作用而产生的耦合现象。这种耦合现象对于传输线的信号质量和完整性有很大的影响。其中,传输线之间的距离是一个重要的影响因素。本文将从传输线感性耦合的基本概念入手&…

新年学新语言Go之一

一、前言 搜索相关知识后续内容等上班后再继续,新年新气象,从今天开始学习一下Go语言,第一次听说这门语言还是2016年的时候,然后2018年买了一本书 Go In Action,然后就没有然后了, 转眼这么多年过去了&am…

输入字符串,判断里面有多少个大写字母,多少小写字母,多少数字

public static void main(String[] args) {//输入字符串,判断里面有多少个大写字母,多少小写字母,多少数字countVary("fsdfsD4f4sf¥#¥%~&*!sg9tssfffSFSFS");}public static void countVary(…

【网络】总览(待更新)

网络Ⅰ 零、概述0. 网络协议1. 网络协议分层OSI 七层模型TCP/IP 五层模型 2. 协议报头3. 通信过程 一、应用层1.1 🔗HTTP 协议1.2 🔗HTTPS 协议 二、传输层2.1 端口号2.2 netstat - - 查询网络状态2.3 pidof - - 查看服务器的进程 id2.4 🔗UD…

亚马逊云科技正式发布Amazon DataZone,一项新的数据管理服务

Amazon DataZone现已正式发布。作为一项新的数据管理服务,它能够在组织中对数据生产者和消费者之间产生的数据进行编目、发现、分析、共享和管理。 早在2022年的亚马逊云科技re:Invent上,就预告了Amazon DataZone产品的发布,并在2023年3月对其…

常见场景面试题(二)

typora-copy-images-to: imgs theme: cyanosis 敏感词库的设计,要求增删改查敏感词。敏感词文本匹配,敏感词一万个,文本长度在 20 - 1000 答:使用 trie 树来实现敏感词库的设计,可以利用字符串公共前缀来节约存储空间。…

webrtc gcc算法(1)

老的webrtc gcc算法,大概流程: 这两个拥塞控制算法分别是在发送端和接收端实现的, 接收端的拥塞控制算法所计算出的估计带宽, 会通过RTCP的remb反馈到发送端, 发送端综合两个控制算法的结果得到一个最终的发送码率,并以…

记次好玩的XXX模式

看到很多框架里都用了这种方式

深入了解Java位运算符

1.前言 位运算在我们刷题时候,对于效率和空间都是很大的提升,所以位运算符,对于我们的作用也是不可或缺的。 里面就存在一个很重要的思想就是位图,此次我讲解位运算符的作用主要是为他服务的 位图的原理:通过一个整数模拟&#xf…

Dubbo的整体框架和主要模块

1 整体框架 Dubbo的整体框架如下图所示: 上层依赖下层提供的功能,下层的改变对上层不可见。 2 主要模块 (1)主要模块如下所示: (2)各子模块描述如下所示: 3 参考文献 &#xff08…

CN论文编写提示词-示例

建议用GPT-4或者Bing 现在开始你是一位计算机学科的研究员!教授!擅长研究和撰写论文!我需要你协助我一起研究一个课题:《计算机信息技术在智能交通系统中的应用》!你认为这个题目如何!有哪些参考资料!这个题目作为论文题目的话有哪些创新意义和价值! 你扮演计算机信息技…

第六章 应用层 | 计算机网络(谢希仁 第八版)

文章目录 第六章 应用层6.1 域名系统DNS6.1.1 域名系统概述6.1.2 互联网的域名结构6.1.3 域名服务器 6.2 文件传送协议6.2.1 FTP概述6.2.2 FTP的基本工作原理6.2.3 简单文件传送协议TFTP 6.3 远程终端协议TELNET6.4 万维网www6.4.1 万维网概述6.4.2 统一资源定位符URL6.4.3 超文…

VBA技术资料MF70:从单元格文本中取消或删除上标

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

力扣刷题 day46:10-16

1.最大整除子集 给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足: answer[i] % answer[j] 0 ,或 answer[j] % answer[i] 0 如果存在…

2.SpringSecurity - 处理器简单说明

文章目录 SpringSecurity 返回json一、登录成功处理器1.1 统一响应类HttpResult1.2 登录成功处理器1.3 配置登录成功处理器1.4 登录 二、登录失败处理器2.1 登录失败处理器2.2 配置登录失败处理器2.3 登录 三、退出成功处理器3.1 退出成功处理器3.2 配置退出成功处理器3.3 退出…

前端需要了解的浏览器缓存知识

文章目录 前言为什么需要缓存?DNS缓存缓存读写顺序缓存位置memory cache(浏览器本地缓存)disk cache(硬盘缓存)重点!!! 缓存策略 - 强缓存和协商缓存1)强缓存ExpiresCach…

认识测试---什么是测试?

文章目录 测试软件测试的性质测试人员的基本素养什么是需求什么是BUG 开发模型和测试模型软件的生命周期开发模型瀑布模型螺旋模型增加,迭代敏捷开发scrume 测试模型V模型W模型(双V模型) 测试 一个好的开发者,不仅要懂技术也要懂…

【cpu_entry_area mapping】SCTF2023-sycrop

前言 也算学习到了,这样对 DB_stack 的利用与 pt_regs 很相似。都是利用在用户态切换在内核态时,会保存用户态的上下文信息在内核栈中,所以我们就可以控制部分内核栈中的数据,以此为我们栈迁移做好准备。 程序分析 启动脚本啥的…

14-k8s-基本存储之EmptyDir、HostPath、NFS

文章目录 一、相关概念二、EmptyDir存储三、HostPath存储四、NFS存储 一、相关概念 概述 Volumn定义在Pod上,然后被该Pod里面的多个容器挂载到具体的文件目录下。实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命周期不和Pod中的单个容器的…