今天新到了一款新屏幕:ST7789 分辨率240*240,1.3寸,迫不及待的点亮它……
本文将介绍如何准备需要的库,及如何将屏幕接线到Arduino

一、必备库准备

1. Adafruit-GFX-Library

安装方式:在Arduino "库管理器"中搜索“Adafruit GFX Library”,选择最新版本,点击 安装 进行安装。此库的GitHub地址为:https://github.com/adafruit/Adafruit-GFX-Library
该类库为所有彩色屏幕的基础类库,和U8G/U8G2/U8X8单色屏类库有些差别。对于因众所周知的原因,打开外网不顺利的朋友,可以点击此处下载PDF类库说明手册:
点击下载官方类库参考手册

2. Arduino-ST7789-Library

此库暂时无法通过库管理器安装,可以到GitHub下载包,放到Arduino的库文件目录,重新打开Arduino就会自动加载了。
此库的GitHub地址是:https://github.com/ananevilya/Arduino-ST7789-Library
a. 网页打开地址,下载ZIP包

b. 将压缩包放到Arduino库目录内。查看库目录的方式为:文件>首选项,设置里面的“项目文件夹位置”地址,后加“libraries”。例如我的库文件全路径为:D:\PracticeCode\Arduino\doc\libraries

c. 将刚才下载的zip包解压缩后,拷贝到libraries目录内

d. 重新打开Arduino,即可在 文件>示例 列表内找到“Arduino ST7789 Library”

e. 打开 graphicstest 示例代码

二、将屏幕接线到Arduino UNO开发板




显示很细腻(请忽略指纹)
引脚接线图:

屏幕引脚 Arduino引脚
GND GND
VCC 3.3v
SCL 13
SDA 11
RES 9
DC 8
BLK 3.3v或悬空

三、运行示例代码

运行示例代码程序graphicstest,修改里面Arduino_ST7789初始化的方式。

/***************************************************This is a library for the ST7789 IPS SPI display.Originally written by Limor Fried/Ladyada for Adafruit Industries.Modified by Ananev Ilia****************************************************/#include <Adafruit_GFX.h>    // Core graphics library by Adafruit
#include <Arduino_ST7789.h> // Hardware-specific library for ST7789 (with or without CS pin)
#include <SPI.h>#define TFT_DC    8
#define TFT_RST   9
#define TFT_CS    10 // only for displays with CS pin
#define TFT_MOSI  11   // for hardware SPI data pin (all of available pins)
#define TFT_SCLK  13   // for hardware SPI sclk pin (all of available pins)//You can use different type of hardware initialization
//using hardware SPI (11, 13 on UNO; 51, 52 on MEGA; ICSP-4, ICSP-3 on DUE and etc)
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST); //for display without CS pin
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_CS); //for display with CS pin
//or you can use software SPI on all available pins (slow)
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK); //for display without CS pin//注意:虽然示例中屏幕没有CS,但是如果选择 without cs pin点亮失败:tft.init()函数执行失败
Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_CS); //for display with CS pin
//Arduino_ST7789 tft = Arduino_ST7789(-1, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_CS); //for display with CS pin and DC via 9bit SPIfloat p = 3.1415926;void setup(void) {Serial.begin(9600);Serial.print("Hello! ST7789 TFT Test ");tft.init(240, 240);   // initialize a ST7789 chip, 240x240 pixelsSerial.println("Initialized");uint16_t time = millis();tft.fillScreen(BLACK);time = millis() - time;Serial.println(time, DEC);delay(500);// large block of texttft.fillScreen(BLACK);testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", WHITE);delay(1000);// tft print functiontftPrintTest();delay(5000);// a single pixeltft.drawPixel(tft.width()/2, tft.height()/2, GREEN);delay(500);// line draw testtestlines(YELLOW);delay(500);// optimized linestestfastlines(RED, BLUE);delay(500);testdrawrects(GREEN);delay(500);testfillrects(YELLOW, MAGENTA);delay(500);tft.fillScreen(BLACK);testfillcircles(10, BLUE);testdrawcircles(10, WHITE);delay(500);testroundrects();delay(500);testtriangles();delay(500);mediabuttons();delay(500);Serial.println("done");delay(1000);
}void loop() {tft.invertDisplay(true);delay(500);tft.invertDisplay(false);delay(500);
}void testlines(uint16_t color) {tft.fillScreen(BLACK);for (int16_t x=0; x < tft.width(); x+=6) {tft.drawLine(0, 0, x, tft.height()-1, color);}for (int16_t y=0; y < tft.height(); y+=6) {tft.drawLine(0, 0, tft.width()-1, y, color);}tft.fillScreen(BLACK);for (int16_t x=0; x < tft.width(); x+=6) {tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);}for (int16_t y=0; y < tft.height(); y+=6) {tft.drawLine(tft.width()-1, 0, 0, y, color);}tft.fillScreen(BLACK);for (int16_t x=0; x < tft.width(); x+=6) {tft.drawLine(0, tft.height()-1, x, 0, color);}for (int16_t y=0; y < tft.height(); y+=6) {tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);}tft.fillScreen(BLACK);for (int16_t x=0; x < tft.width(); x+=6) {tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);}for (int16_t y=0; y < tft.height(); y+=6) {tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);}
}void testdrawtext(char *text, uint16_t color) {tft.setCursor(0, 0);tft.setTextColor(color);tft.setTextWrap(true);tft.print(text);
}void testfastlines(uint16_t color1, uint16_t color2) {tft.fillScreen(BLACK);for (int16_t y=0; y < tft.height(); y+=5) {tft.drawFastHLine(0, y, tft.width(), color1);}for (int16_t x=0; x < tft.width(); x+=5) {tft.drawFastVLine(x, 0, tft.height(), color2);}
}void testdrawrects(uint16_t color) {tft.fillScreen(BLACK);for (int16_t x=0; x < tft.width(); x+=6) {tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);}
}void testfillrects(uint16_t color1, uint16_t color2) {tft.fillScreen(BLACK);for (int16_t x=tft.width()-1; x > 6; x-=6) {tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);}
}void testfillcircles(uint8_t radius, uint16_t color) {for (int16_t x=radius; x < tft.width(); x+=radius*2) {for (int16_t y=radius; y < tft.height(); y+=radius*2) {tft.fillCircle(x, y, radius, color);}}
}void testdrawcircles(uint8_t radius, uint16_t color) {for (int16_t x=0; x < tft.width()+radius; x+=radius*2) {for (int16_t y=0; y < tft.height()+radius; y+=radius*2) {tft.drawCircle(x, y, radius, color);}}
}void testtriangles() {tft.fillScreen(BLACK);int color = 0xF800;int t;int w = tft.width()/2;int x = tft.height()-1;int y = 0;int z = tft.width();for(t = 0 ; t <= 15; t++) {tft.drawTriangle(w, y, y, x, z, x, color);x-=4;y+=4;z-=4;color+=100;}
}void testroundrects() {tft.fillScreen(BLACK);int color = 100;int i;int t;for(t = 0 ; t <= 4; t+=1) {int x = 0;int y = 0;int w = tft.width()-2;int h = tft.height()-2;for(i = 0 ; i <= 16; i+=1) {tft.drawRoundRect(x, y, w, h, 5, color);x+=2;y+=3;w-=4;h-=6;color+=1100;}color+=100;}
}void tftPrintTest() {tft.setTextWrap(false);tft.fillScreen(BLACK);tft.setCursor(0, 30);tft.setTextColor(RED);tft.setTextSize(1);tft.println("Hello World!");tft.setTextColor(YELLOW);tft.setTextSize(2);tft.println("Hello World!");tft.setTextColor(GREEN);tft.setTextSize(3);tft.println("Hello World!");tft.setTextColor(BLUE);tft.setTextSize(4);tft.print(1234.567);delay(1500);tft.setCursor(0, 0);tft.fillScreen(BLACK);tft.setTextColor(WHITE);tft.setTextSize(0);tft.println("Hello World!");tft.setTextSize(1);tft.setTextColor(GREEN);tft.print(p, 6);tft.println(" Want pi?");tft.println(" ");tft.print(8675309, HEX); // print 8,675,309 out in HEX!tft.println(" Print HEX!");tft.println(" ");tft.setTextColor(WHITE);tft.println("Sketch has been");tft.println("running for: ");tft.setTextColor(MAGENTA);tft.print(millis() / 1000);tft.setTextColor(WHITE);tft.print(" seconds.");
}void mediabuttons() {// playtft.fillScreen(BLACK);tft.fillRoundRect(25, 10, 78, 60, 8, WHITE);tft.fillTriangle(42, 20, 42, 60, 90, 40, RED);delay(500);// pausetft.fillRoundRect(25, 90, 78, 60, 8, WHITE);tft.fillRoundRect(39, 98, 20, 45, 5, GREEN);tft.fillRoundRect(69, 98, 20, 45, 5, GREEN);delay(500);// play colortft.fillTriangle(42, 20, 42, 60, 90, 40, BLUE);delay(50);// pause colortft.fillRoundRect(39, 98, 20, 45, 5, RED);tft.fillRoundRect(69, 98, 20, 45, 5, RED);// play colortft.fillTriangle(42, 20, 42, 60, 90, 40, GREEN);
}

Arduino ST7789 240*240 1.3寸 TFT —— 新屏点亮篇相关推荐

  1. STM32 FSMC接口驱动4.3寸TFT LCD屏

    STM32 FSMC接口驱动4.3寸TFT LCD屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏. 这里以STM32F103VET ...

  2. 全志H616开发板Orange Pi Zero2连接香橙派5寸TFT液晶屏的测试说明

    香橙派Zero2开发板采用全志H616 四核 64位处理器,拥有512MB/1GB 内存可选,集成千兆以太网卡.蓝牙5.0+双频WiFi(2.4GHz和5GHz).USB2.0.Micro-HDMI( ...

  3. ZYNQ7020(黑金)纯verilog驱动4.3寸RGB接口TFT液晶屏(AN430)显示彩条

    ZYNQ7020(黑金)纯verilog驱动4.3寸RGB接口TFT液晶屏(AN430)显示彩条 简介 像素(Pixel):像素是指由图像的小方格组成的,这些小方快都有一个明确的位置和被分配的色彩数值 ...

  4. 7英寸液晶显示屏应用行业 7寸TFT液晶显示屏供应

    7寸液晶屏的应用领域有哪些?7寸的TFT液晶屏是比较小的尺寸液晶屏,不过这个尺寸的优点非常多,所以应用的领域也是非常的广泛的,那么具体应用在哪些领域呢?要想知道的话,就先得了解下7寸TFT液晶屏的特点 ...

  5. Arduino ST7789 240*240 1.3寸 TFT —— 飞升之高效率显示驱动篇

    昨天的屏幕到了,也用之前"发现的"Arduino-ST7789-Library"专用驱动库"进行了点亮操作,但总是感觉屏幕显示的效率差强人意.因为在做TFT屏幕 ...

  6. ESP32 入门笔记08:1.54寸(240*240)彩色TFT 显示高清IPS LCD 屏幕 SPI接口

    目录 1.屏幕规格 2.原理图 3.程序实现 3.1引脚定义 3.2Adafruit_GFX / Arduino_ST7789版 3.3TFT_eSPI库版 3.3.1配置TFT_eSPI a.选择屏 ...

  7. ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏

    ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏 材料 硬件连接 引脚连接表 引脚连接图 安装TFT_eS ...

  8. Arduino+esp8266+1.3寸TFT屏(st7789驱动)显示图片教程

    1.环境配置 Arduino下载TFT_eSPI和JPEGDecoder库 步骤:项目->加载库->管理库 修改User_Setup.h 驱动 #define ST7789_DRIVER ...

  9. 0.1.3 合宙CORE-ESP32-C3开发板用arduino点亮ST7735 1.8寸TFT屏【已更新失效链接2022.07.10】

    9.9的ESP32开发板想用arduino开发,无奈都是用luatos玩,于是折腾了下 目的 用arduino驱动合宙ESP32-C3开发板点亮S7735TFT屏 材料 CORE-ESP32-C3开发 ...

最新文章

  1. 郭毅可教授在线受聘清华大学杰出访问教授并举行学术报告会
  2. unittest框架执行用例
  3. Uncaught ReferenceError: angular is not defined
  4. LaTeX配置及实用工具汇总
  5. python xlwt写入excel_python xlwt模块写入excel超过65536行报错问题解决方法
  6. NLP复习资料(2)-三~五章:形式语言、语料库、语言模型
  7. 使用spring jdbc的batchUpdate功能提高性能
  8. windows + visual studio 2010 配置SVN
  9. python实现Kruskal算法求解加权图中最小生成树问题
  10. 微信小程序短信倒计时60s功能
  11. 关于Linux 系统程序(进程)自动升级的方法
  12. 用windows电脑制作macos系统安装U盘
  13. 新仙剑奇侠传完美攻略
  14. RocketMQ初识
  15. Java国际化:BreakIterator
  16. ANSI C、C89、C99和C51的区别
  17. 「Python|输入输出」如何进行用户输入、文件输入和输出
  18. VMvare虚拟机下载地址
  19. C语言实现的音乐播放器
  20. 整篇文章翻译软件提供多平台翻译api接口

热门文章

  1. 微信中点击下载链接无反应 微信h5下载链接打不开的解决方案
  2. ResNet结构分析
  3. uniapp - 超详细 H5 网站图片压缩功能,图像上传前进行压缩降低大小并上传到服务器完整示例源码(附带 uview 组件库 u-upload 上传组件与该图片压缩插件 “搭配组合“ 使用教程)
  4. 2018年第九届蓝桥杯Java本科B组国赛题解
  5. 定增保底方式与纠纷案例
  6. 结合matlab代码案例解释ICA独立成分分析原理
  7. 如何从Angular 5 App升级到Angular 6
  8. PyTorch 中科大源
  9. 探讨敏捷开发方法论的优点、核心机制以及应用场景,以帮助企业实现“敏捷转型”。
  10. Linux内核RPC请求过程