使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏
开发板选择
本次使用开发板模块丝印为ESP32-WROOM-32E

开发板库选择
Arduino IDE上型号选择为ESP32-WROOM-DA Module

显示屏选择
使用显示屏为8针SPI接口显示屏
驱动IC为ST7735S


使用库
使用三个Arduino平台库
分别是
- Adafruit_GFX
- Adafruit_ST7735
- SPI
代码详解
首先引入使用的三个库
- Adafruit_GFX
- Adafruit_ST7735
- SPI
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
然后定义连接显示屏的引脚
#define TFT_CS 14 // 请替换为您的CS引脚号
#define TFT_DC 27 // 请替换为您的DC引脚号
#define TFT_RST 5 // 请替换为您的RST引脚号
//#define TFT_SCK 18 // 请替换为您的SCK引脚号
//#define TFT_MOSI 23 // 请替换为您的MOSI引脚号
显示屏共有8个引脚
功能如下所示:
- BLK :背光控制引脚 低电平关闭背光 悬空或高电平为开启背光
- CS :(Chip Select,片选引脚) SPI通信中用于选择特定的芯片或设备
- DC :(Data/Command,数据 / 命令引脚) 显示屏驱动通过该引脚来识别接受的数据为数据或命令
- RST:(Reset,复位引脚) 用于将设备恢复到初始状态。
- SCL:(Serial Clock,串行时钟引脚) SPI协议中的CLK引脚
- SDA :(Serial Data,串行数据引脚) SPI协议中的MOSI引脚
- VDD:(Power Supply Voltage,电源引脚)
- GND:(Ground,接地引脚)
通过查看<Adafruit_ST7735.h>文件可以知道有两种初始化引脚方式
一种是使用
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);//创建显示屏对象并初始化
这时候可以将SCL和SDA引脚连接到默认的D18和D23引脚
也可以使用
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI , TFT_SCLK , TFT_RST);//创建显示屏对象并初始化
来自定义使用的引脚

显示代码则使用下面的函数进行相关显示配置
tft.initR(INITR_BLACKTAB); //使用适当的初始化参数tft.setRotation(1); //设置显示方向,1表示顺时针旋转90度tft.fillScreen(ST7735_BLACK); //设置背景颜色tft.setTextColor(ST7735_WHITE); //设置文字颜色tft.setTextSize(2); //设置字体大小tft.setCursor(10, 10); //设置起始位置tft.println("Hello, ST7735!"); //输出显示的文本信息
下面代码则用来测试程序是否正确运行
正常运行时板载的LED灯将会闪烁
pinMode(2, OUTPUT); // 将引脚2设置为输出模式digitalWrite(2, LOW); // 将引脚2设置为低电平delay(1000);digitalWrite(2, HIGH); // 将引脚2设置为高电平delay(1000);
完整代码
//引入显示屏库
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>#define TFT_CS 14 // 请替换为您的CS引脚号
#define TFT_DC 27 // 请替换为您的DC引脚号
#define TFT_RST 5 // 请替换为您的RST引脚号
//#define TFT_SCK 18 // 请替换为您的SCK引脚号
//#define TFT_MOSI 23 // 请替换为您的MOSI引脚号
//已经默认配置Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);//创建显示屏对象并初始化void setup() {pinMode(2, OUTPUT); // 将引脚2设置为输出模式tft.initR(INITR_BLACKTAB); // 使用适当的初始化参数tft.setRotation(1); // 设置显示方向,1表示顺时针旋转90度tft.fillScreen(ST7735_BLACK);//设置背景颜色tft.setTextColor(ST7735_WHITE);//设置文字颜色tft.setTextSize(2);//设置字体大小tft.setCursor(10, 10);//设置起始位置tft.println("Hello, ST7735!");
}void loop() {digitalWrite(2, LOW); // 将引脚2设置为低电平delay(1000);digitalWrite(2, HIGH); // 将引脚2设置为高电平delay(1000);
}
显示测试

相关文章:
使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏
开发板选择 本次使用开发板模块丝印为ESP32-WROOM-32E 开发板库选择 Arduino IDE上型号选择为ESP32-WROOM-DA Module 显示屏选择 使用显示屏为8针SPI接口显示屏 驱动IC为ST7735S 使用库 使用三个Arduino平台库 分别是 Adafruit_GFXAdafruit_ST7735SPI 代码详解 首…...
Spring Cloud Alibaba(六)
目录: 分布式链路追踪-SkyWalking为什么需要链路追踪什么是SkyWalkingSkyWalking核心概念什么是探针Java AgentJava探针日志监控实现之环境搭建Java探针日志监控实现之探针实现编写探针类TestAgent搭建 ElasticsearchSkyWalking服务环境搭建搭建微服务微服务接入Sky…...
【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度
一、效果演示 重写Sprite组件,做了以下优化: 1、新增自变换,在不影响子节点的前提下位移、旋转、缩放、改变透明度 新增可合批调色板,支持色相、明暗调节 新增圆角矩形、3D透视旋转、纹理循环 所有功能均支持合批、原生平台&…...
jupyter-lab 环境构建
我平时用来调试各种代码的。 创建环境,安装库 conda create --name jupyterlab python3.12 -y conda activate jupyterlab conda install -c conda-forge jupyterlab nodejs之前用的是3.10的,但是最近安装的时候,发现3.10的python里面的jup…...
【C++】LeetCode:LCR 026. 重排链表
题干 LCR 026. 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实…...
【Linux】vim编辑器
vim是什么? vim就是命令行模式下的文本编辑器,相当于windows中的记事本,可以用来进行文本编辑。 vim有三种运行模式,分别可以执行不同的操作: 普通模式(Normal Mode):用于浏览和编辑…...
delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务
这篇博客展示了如何使用Delphi创建一个简单的HTTP服务器,并处理GET和POST请求。服务器监听6600端口,响应JSON格式的数据。客户端通过IdHttp组件进行GET和POST请求,获取并显示服务器响应的内容。 http服务器测试代码 procedure TForm1.FormSh…...
JVM 主副内存 详解
在 JVM (Java Virtual Machine) 中,内存的设计主要分为主内存和工作内存(又称为线程内存)。这种设计是基于 Java 内存模型(Java Memory Model, JMM) 的规定,它确保了多线程环境下数据的一致性和线程间的通信…...
sscanf与sprintf函数
本期介绍🍖 主要介绍:sscanf()、sprintf()这对输入/输出函数,并详细讲解了这两个函数的应用场景。 概述🍖 在C语言的输出和输入库中,有三对及其相似的库函数:printf()、scanf()、fprintf()、fscanf()、spri…...
【k8s】创建基于sa的token的kubeconfig
需求 创建一个基于sa的token的kubeconfig文件,并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…...
Gentoo Linux部署LNMP
一、安装nginx 1.gentoo-chxf ~ # emerge -av nginx 提示配置文件需更新 2.gentoo-chxf ~ # etc-update 3.gentoo-chxf ~ # emerge -av nginx 4.查看并启动nginx gentoo-chxf ~ # systemctl status nginx gentoo-chxf ~ # systemctl start nginx gentoo-chxf ~ # syst…...
2411C++,CXImage简单使用
介绍 CxImage是一个可非常简单快速的加载,保存,显示和转换图像的C类. 文件格式和链接的C库 Cximage对象基本上是加了一些成员变量来保存有用信息的一个位图: class CxImage{...protected:void* pDib; //包含标题,调色板,像素BITMAPINFOHEADER head; //标准头文件CXIMAGEINFO…...
什么是 Kubernetes(K8s)?
什么是 Kubernetes(K8s)? Kubernetes(简称 K8s) 是一个用来管理容器的开源工具,它可以自动化部署、扩展和管理容器化应用。简单来说,K8s 就是一个“容器管家”,负责确保你的应用程序…...
深入解析:TypeScript 与 Vue 的完美结合
文章目录 前言一、准备工作二、基本用法三、进阶主题结语 前言 Vue.js 是一款流行的渐进式 JavaScript 框架,它以易于学习和灵活的特性而闻名。TypeScript 则是 JavaScript 的一个超集,它引入了静态类型检查等高级功能,有助于构建更大型且复…...
机器学习周志华学习笔记-第13章<半监督学习>
机器学习周志华学习笔记-第13章<半监督学习> 卷王,请看目录 13半监督学习13.1 生成式方法13.2 半监督SVM13.3 基于分歧的方法13.4 半监督聚类 13半监督学习 前面我们一直围绕的都是监督学习与无监督学习,监督学习指的是训练样本包…...
软件工程——期末复习(1)
名词解释: 名词解释--人月 答案:人月是软件开发工作量的单位,1人月表示1个程序员1个月的工作时间所开发的代码量。 请解释软件缺陷、错误和失败,并简单举例说明。 答案:缺陷(defect)指系统代…...
【JavaEE初阶 — 网络编程】实现基于TCP协议的Echo服务
TCP流套接字编程 1. TCP & UDP 的区别 TCP 的核心特点是面向字节流,读写数据的基本单位是字节 byte 2 API介绍 2.1 ServerSocket 定义 ServerSocket 是创建 TCP 服务端 Socket 的API。 构造方法 方法签名 方法说明 ServerS…...
vue结合canvas动态生成水印效果
在 Vue 项目中添加水印可以通过以下几种方式实现: 方法一:使用 CSS 直接通过 CSS 的 background 属性实现水印: 实现步骤 在需要添加水印的容器中设置背景。使用 rgba 设置透明度,并通过 background-repeat 和 background-size…...
Qt 5 中的 QTextStream 使用指南
文章目录 Qt 5 中的 QTextStream 使用指南介绍基本概念读取文件注意事项结论 Qt 5 中的 QTextStream 使用指南 介绍 QTextStream 是 Qt 框架中用于处理文本数据的类。它提供了方便的接口来读写文本文件或字符串,支持多种编码格式,并且可以与 QIODevice…...
中安证件OCR识别技术助力鸿蒙生态:智能化证件识别新体验
在数字化和智能化的浪潮中,伴随国产化战略的深入推进,国产操作系统和软件生态的建设逐渐走向成熟。鸿蒙操作系统(HarmonyOS Next)作为华为推出的重要操作系统,凭借其开放、灵活和高效的特点,正在加速在多个…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
