使用 ESP8266 + Arduino IDE + ST7789 240*240 OLED 显示屏实现显示“Hello World!”

我会带你从零开始 ,从安装 Arduino、配置 ESP8266 环境、接线、安装库到最终显示 Hello World,全程一步到位,新手也能直接成功。

一、准备工具与材料

  1. 开发板:ESP8266MOD(ESP-12F / ESP-07 等通用)
  2. 显示屏:ST7789 1.8 寸 TFT 彩屏(最常用)
  3. 连接线:杜邦线若干
  4. 电脑 + USB 数据线
  5. 全新安装的 Arduino IDE(官方最新版即可)

二、Arduino IDE安装

1.软件安装

直接下载软件安装即可

Arduino软件下载链接:https://arduino.me/download

2.库安装

2.1 ESP8266库

在【文件】-> 【首选项】-> 【其他开发板管理器地址】里面添加上如下的库的链接地址,关闭并重开 Arduino。

复制代码
https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://arduino.me/packages/esp32.json

【工具 】-> 【开发板】-> 【开发板管理器】,搜索 esp8266,现在可以正常安装了(速度很快)。

2.2 TFT_eSPI库

我这里使用的是TFT_eSPI的库,当然好像还有其他的库,只是感觉TFT_eSPI的库代码写更简单一些。

在【库管理】中搜索"TFT_eSPI"然后安装即可,后面就可以包含TFT_eSPI.h,使用TFT_eSPI类的对象及函数进行字符串和图像的显示。

三、ESP8266 + ST7789显示屏硬件连接

ST7789显示屏总共有7根引脚,每根引脚功能定义及与ESP8266连线如下:

OLED 引脚 ESP8266 引脚 说明
VCC 3.3V 千万不能接 5V!会烧屏!
GND GND 共地
SDA GPIO13 SPI 数据
SCL GPIO14 SPI时钟
RES GPIO2 复位
DC GPIO12 数据/命令
BLK 3.3V 或不接 背光

注意:ST7789 只能用 3.3V 供电,接 5V 会直接烧坏屏幕!

四、代码实现

1. 选择开发板

打开 Arduino -> 【工具】-> 【开发板】-> 【ESP8266 Boards 】 -> 能看到 Generic ESP8266 Module,说明核心已装好并选择。

2. 开启ST7789显示屏驱动,并在代码中配置引脚

打开TFT_eSPI.h文件,可以发现头文件包含了User_Setup_Select.h文件,继续打开该文件。

可以发现User_Setup_Select.h又包含了User_Setup.h文件,并且在User_Setup_Select.h的下方定义了各种驱动所对应的包含文件。

打开User_Setup.h文件,可以发现,这里才是定义了各种驱动宏文件的位置,首先把我们需要的ST7789宏打开

这里的TFT_RGB_ORDER就是显示屏的RGB的排布顺序,如果后面发现屏幕填充颜色不符合预期,就可以调节这里,其次下面的TFT_WIDTH/TFT_HEIGHT是定义显示屏的宽高的,因为我们马上只接在初始化TFT_eSPI类对象的时候就强指定屏幕宽高,这里可以不用定义。

接下来就是在代码中定义ESP8266MOD ↔ ST7789 接线,按照我们的硬件接线,因为ST7789没有片选线,所以不用打开,屏幕背光也可以选择性打开,我们这里也不打开。至此,代码配置上的工作已经完成。

3. 使用TFT_eSPI类编写显示字符的代码

下面就可以开始使用TFT_eSPI类对象进行字符串的显示,首先定义一个类对象,然后先调用begin进行初始化,随后调用fillScreen填充颜色,设置字体颜色及大小,最后调用printf进行字符串的显示,随后显示效果如下。

复制代码
#include "TFT_eSPI.h"
#include <string>
#include "pic.h"

TFT_eSPI TFT(240, 240);

void slowPrint(String str)
{
  for(int i=0;i<str.length();i++)
  {
    TFT.print(str[i]);
    delay(100);
  }
}

void slowPrint1(std::string str)
{
  for(int i=0;i<str.size();i++)
  {
    TFT.print(str[i]);
    delay(100);
  }
}

void setup() {
  // put your setup code here, to run once:
  TFT.begin();
  TFT.fillScreen(TFT_BLACK);
  TFT.setTextColor(TFT_GREEN);
  TFT.setTextSize(3);
  直接调用printf接口进行显示字符串
  TFT.printf("Helloworld");

  // 调用自己的接口实现慢打印
  // slowPrint("Helloworld");

  // 显示图片
  //TFT.pushImage(0,0,240,240,gImage_test,1);
}

void loop() {
  // put your main code here, to run repeatedly:

}

五、常见问题

1. 屏幕不亮

  • 检查 BLK 接 3.3V
  • 检查 VCC 是 3.3V,不是 5V

2. 亮屏但不显示文字

  • 检查 SCL/SDA 不要接反
  • 检查 CS、DC、RES 接线
  • 屏幕驱动是否配置有问题(User_Setup.h中是否开启了ST7789宏定义)
相关推荐
星夜夏空991 小时前
STM32单片机学习(1)——keil5安装以及环境部署
stm32·单片机·学习
kaikaile19951 小时前
STM32 + ADS1256 24位高精度ADC驱动测试程序
stm32·单片机·嵌入式硬件
搁浅小泽2 小时前
PCBA生产工艺流程
单片机·嵌入式硬件·可靠性工程师
GQli204815 小时前
一天看懂一个原理图(day7)电源输入部分
单片机·嵌入式硬件
llilian_1616 小时前
失真度测量仪校准 精准可靠的失真度校准检定测试仪筑牢检测根基 失真度检定装置
功能测试·单片机·嵌入式硬件·硬件工程
XiYang-DING16 小时前
【Java EE】UDP 编程核心类与方法
单片机·udp·java-ee
iCxhust17 小时前
点亮8086最小系统的LED
stm32·单片机·嵌入式硬件·51单片机·微机原理·8086最小系统·8088单板机
时空自由民.18 小时前
开环无感FOC与SPWM&SVPWM
单片机·嵌入式硬件
集芯微电科技有限公司18 小时前
替代TMUX1380A/TMUX1309A双向8:1单通道 4:1双通道控制多路复用器
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设