1.8寸彩色触摸屏
模块来源
规格参数
工作电压:3.3V
工作电流:30MA
模块尺寸:35(H) x 56(V) MM
像素大小:128(H) x 160(V)RGB
驱动芯片:ST7735S
通信协议:SPI
管脚数量:12 Pin(2.54mm间距排针)
带电阻触摸芯片:XPT2046
硬件连接
- TFT_CS (Chip Select): 连接到开发板的数字引脚10。
- TFT_RST (Reset): 连接到开发板的数字引脚9。有时候这个引脚可以直接连接到开发板的Reset引脚或者永久连接到VCC,如果屏幕始终开机复位的话。
- TFT_DC (Data/Command): 连接到开发板的数字引脚8。
- TFT_MOSI (Master Out Slave In): 连接到开发板的数字引脚11(与硬件SPI的MOSI引脚相对应)。
- TFT_SCLK (Serial Clock): 连接到开发板的数字引脚13(与硬件SPI的SCK引脚相对应)。
- TFT_MISO (Master In Slave Out): 如果屏幕支持从Ar开发板duino读取数据,则连接到开发板的数字引脚12(与硬件SPI的MISO引脚相对应)。不是所有的TFT屏幕都需要这个连接。
- VCC: 连接到开发板的5V或3.3V,具体取决于屏幕的电压要求。
- GND: 连接到开发板的GND。
- T_CS: 连接到开发板的数字引脚6。
- PEN: 这个引脚是可选的,用于触摸中断信号。如果不使用中断特性,可以不连接。
使用方法
安装库文件(如果已经安过则无需理会)
- 打开Arduino IDE。
- 选择“工具” > “管理库…”。
- 搜索“Adafruit ST7735”、“Adafruit GFX”和“ThingPulse XPT2046 Touch”,然后分别安装这三个库。
编写代码
接下来在ino文件中编写以下代码:
c
/******************************************************************************
* 测试硬件:ColorEasyDuino开发板
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2024年03月26日
* 功能介绍:
*****************************************************************************
* 开发板软硬件资料与相关项目软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <XPT2046_Touchscreen.h>
// 定义ST7735屏幕的SPI引脚
#define TFT_CS 10
#define TFT_RST 9 // 可以设置为9或者连接到Arduino的Reset引脚
#define TFT_DC 8
// 定义STMPE610触摸屏的SPI引脚
#define STMPE_CS 6
#define TS_IRQ 2
XPT2046_Touchscreen ts(STMPE_CS, TS_IRQ);
// 初始化Adafruit_ST7735库
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
void setup(void) {
Serial.begin(9600);
tft.initR(INITR_GREENTAB); // 初始化显示屏幕
tft.fillScreen(ST7735_BLACK); // 清屏为黑色
ts.begin();
ts.setRotation(1);
tft.setTextWrap(false); // 设置文字不自动换行
tft.setRotation(0); // 根据需要调整屏幕方向
tft.fillScreen(ST7735_BLACK); // 清屏为黑色
tft.setTextColor(ST7735_WHITE); // 设置文字颜色为白色
tft.setTextSize(1); // 设置文字大小
tft.setCursor(0, 0); // 设置文字起始位置
tft.print("Hello, World!"); // 在屏幕上打印文本
}
void loop() {
if (ts.tirqTouched()) {
if (ts.touched()) {
TS_Point p = ts.getPoint();
tft.fillRect(0,30,50,77,ST7735_BLACK);
tft.setCursor(0, 30); // 设置文字起始位置
tft.print("x = ");
tft.print(p.x); // 在屏幕上打印文本
tft.setCursor(0, 60); // 设置文字起始位置
tft.print("y = ");
tft.print(p.y); // 在屏幕上打印文本
delay(5);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70