Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1130|回复: 18

[经验] 探究 1.14寸 IPS TFT

[复制链接]
发表于 2022-8-15 19:55 | 显示全部楼层 |阅读模式
好家伙,今天翻出了前两年买的1.14寸IPS TFT,当时买了不会用,现在重新捡起来玩。

屏(正面)

屏(正面)

(反面)

(反面)
 楼主| 发表于 2022-8-15 20:06 | 显示全部楼层
首先看一下:
驱动IC:ST7789V
通信方式:4线SPI
像素:135X240
大小:1.14‘
屏幕种类:无触摸,IPS
卖家给的示例没用库,还要自己定义颜色,决定找个ST7789的库用一下,于是我下载了下图中第一个库


安装库

安装库
 楼主| 发表于 2022-8-15 20:11 | 显示全部楼层
先放一个简化版的adafruit st7789库给的示例
  1. #include <Adafruit_GFX.h>   
  2. #include <Adafruit_ST7789.h>
  3. #include <SPI.h>

  4. #define TFT_CS         12
  5. #define TFT_RST        10 // Or set to -1 and connect to Arduino RESET pin
  6. #define TFT_DC         11
  7. #define TFT_MOSI 9  // Data out
  8. #define TFT_SCLK 8  // Clock out

  9. Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

  10. float p = 3.1415926;

  11. void setup() {
  12.   // put your setup code here, to run once:
  13. tft.init(135, 240);
  14. tft.fillScreen(ST77XX_BLACK);
  15. }

  16. void loop() {
  17.   // put your main code here, to run repeatedly:
  18. tftPrintTest();
  19. }

  20. void tftPrintTest() {
  21.   tft.setTextWrap(false);
  22.   tft.fillScreen(ST77XX_BLACK);
  23.   tft.setCursor(0, 30);
  24.   tft.setTextColor(ST77XX_RED);
  25.   tft.setTextSize(1);
  26.   tft.println("Hello World!");
  27.   tft.setTextColor(ST77XX_YELLOW);
  28.   tft.setTextSize(2);
  29.   tft.println("Hello World!");
  30.   tft.setTextColor(ST77XX_GREEN);
  31.   tft.setTextSize(3);
  32.   tft.println("Hello World!");
  33.   tft.setTextColor(ST77XX_BLUE);
  34.   tft.setTextSize(4);
  35.   tft.print(1234.567);
  36.   delay(1500);
  37.   tft.setCursor(0, 0);
  38.   tft.fillScreen(ST77XX_BLACK);
  39.   tft.setTextColor(ST77XX_WHITE);
  40.   tft.setTextSize(0);
  41.   tft.println("Hello World!");
  42.   tft.setTextSize(1);
  43.   tft.setTextColor(ST77XX_GREEN);
  44.   tft.print(p, 6);
  45.   tft.println(" Want pi?");
  46.   tft.println(" ");
  47.   tft.print(8675309, HEX); // print 8,675,309 out in HEX!
  48.   tft.println(" Print HEX!");
  49.   tft.println(" ");
  50.   tft.setTextColor(ST77XX_WHITE);
  51.   tft.println("Sketch has been");
  52.   tft.println("running for: ");
  53.   tft.setTextColor(ST77XX_MAGENTA);
  54.   tft.print(millis() / 1000);
  55.   tft.setTextColor(ST77XX_WHITE);
  56.   tft.print(" seconds.");
  57. }
复制代码
OK,成功点亮,就不给图了!
 楼主| 发表于 2022-8-15 20:22 | 显示全部楼层
实验一:显示大段文字及清屏
清屏:
  1. tft.fillScreen(ST77XX_BLUE);
复制代码
实际上就是填充背景色,这里用了蓝色,改颜色直接改颜色的英语单词即可.
填充文字:
  1. tft.setCursor(0, 0);
  2. tft.setTextColor(ST77XX_WHITE);
  3. tft.setTextSize(0);
复制代码
设置光标位置,设置文字颜色和大小,显示文字.

完整程序:

  1. #include <Adafruit_GFX.h>   
  2. #include <Adafruit_ST7789.h>
  3. #include <SPI.h>

  4. #define TFT_CS         6
  5. #define TFT_RST        4
  6. #define TFT_DC         5
  7. #define TFT_MOSI       3
  8. #define TFT_SCLK       2

  9. Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

  10. void setup() {
  11. tft.init(135, 240);
  12. tft.setRotation(3);
  13. tft.fillScreen(ST77XX_BLUE);
  14. }

  15. void loop() {
  16. tft.setCursor(0, 0);
  17. tft.setTextColor(ST77XX_WHITE);
  18. tft.setTextSize(0);
  19. tft.println("Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs - light on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating a motor, turning on an LED, publishing something online. You can tell your board what to do by sending a set of instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing.");
  20. }
复制代码



 楼主| 发表于 2022-8-15 20:30 | 显示全部楼层
本帖最后由 何锦昊 于 2022-8-15 20:32 编辑

实验效果如图
  1. //文字摘自Arduino国际版网站对Arduino的解释
复制代码
用了最小的字体,实测0号字没比1号字小多少

屏

实验板

实验板
 楼主| 发表于 2022-8-15 20:40 | 显示全部楼层
本帖最后由 何锦昊 于 2022-8-16 09:10 编辑

实验二:显示图片

打算用取模软件先取模在显示,最后放弃了,不知道位置什么只能显示单色位图,彩色图片能取模,但显示异常,翻找了各大网站,还是有问题,可能是adafruit st7789库的问题,得先缓一缓。在学习 topdog 帖子中的TFT_eSPI库。
 楼主| 发表于 2022-8-16 09:47 | 显示全部楼层
继续实验二:显示图片

用到以下几个库
  1. #include <Adafruit_GFX.h>        
  2. #include <Adafruit_ST7789.h>
  3. #include <SdFat.h>               
  4. #include <Adafruit_SPIFlash.h>   
  5. #include <Adafruit_ImageReader.h>
复制代码
在原有的两个库的基础上在添加三个,这些库都能直接ide的库管理器中下载
 楼主| 发表于 2022-8-16 10:05 | 显示全部楼层
本帖最后由 何锦昊 于 2022-8-16 10:11 编辑

用到这五个库是因为我决定将图片放在micro sd card中显示出来

实验要准备以下材料:
1.micro sd card      X1(容量在0-32GB这之间,建议容量小一些较好,选用老一点的卡,建议选用class2或4,较新的class6,8,10应该也可以)
2.micro sd card读卡器      X1(寻个质量好点的)
3.5v电平micro sd card模块      X1(本实验一定要5v的,SPI通讯)
4.面包板      X1
5.导线若干
6.arduino uno或nano     X1
7.数据线       X1
8.1.14寸tft        X1

材料

材料
 楼主| 发表于 2022-8-16 10:35 | 显示全部楼层
首先找一张16:9的图片近似比例也行,差太多转像素时会失真

步骤如图:

1.截张图放到Windows自带的画图

1.截张图放到Windows自带的画图

2.选择重置大小功能

2.选择重置大小功能

3.选择选择像素,进行调整

3.选择选择像素,进行调整

4.单击确定可见如图

4.单击确定可见如图

5.另存为为BMP图片

5.另存为为BMP图片

6.注意保存类型为24位位图

6.注意保存类型为24位位图

7.复制图片文件到储存卡

7.复制图片文件到储存卡
 楼主| 发表于 2022-8-16 11:16 | 显示全部楼层
接线:
D2                             TFT_SCLK(SCL)
D3                             TFT_MOSI(SDA)
D4                             TFT_RST
D5                             TFT_DC
D6                             TFT_CS
D7                             SD_CS
D11                           SD_MOSI
D12                           SD_MISO
D13                           SD_CLK(SCK)
5V                             SD/TFT_5V
GND                          SD/TFT_GND
不接                           TFT_BLK
TFT_BLK不接或接5V亮背光,接GND则关。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|Arduino中文社区

GMT+8, 2022-10-7 21:30 , Processed in 0.032798 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表