【花雕学编程】Arduino动手做(249)---ESP32 1.28寸 TFT GC9A01屏幕之旋转、随机色彩的十字字母动画

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验开发板使用ESP32

在这里插入图片描述
在这里插入图片描述

实验模块接线示意图

在这里插入图片描述
在这里插入图片描述

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
项目实验之十五:旋转、随机色彩的十字字母动画

实验开源代码

/*
  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  项目实验之十五:旋转、随机色彩的十字字母动画
*/

//       GC9A010 -------- ESP32
//       RST ------------ NC(复位引脚,此处未连接)
//       CS ------------- D4(片选引脚,连接到ESP32的D4引脚)
//       DC ------------- D2(数据/命令选择引脚,连接到ESP32的D2引脚)
//       SDA ------------ D23 (green)(主数据输出引脚,连接到ESP32的D23引脚,绿色线)
//       SCL ------------ D18 (yellow)(时钟信号引脚,连接到ESP32的D18引脚,黄色线)
//       GND ------------ GND(接地引脚,连接到ESP32的接地端)
//       VCC -------------3V3(电源引脚,连接到ESP32的3.3V电源)

#include "SPI.h"                   // 引入SPI库
#include "Adafruit_GFX.h"          // 引入Adafruit GFX库
#include "Adafruit_GC9A01A.h"      // 引入GC9A01A显示屏驱动库

#define TFT_DC 2                   // 定义TFT显示屏的DC引脚
#define TFT_CS 4                   // 定义TFT显示屏的CS引脚

Adafruit_GC9A01A tft(TFT_CS, TFT_DC); // 创建GC9A01A对象

#define DELAY_TIME 300             // 动画延迟(毫秒)
#define TEXT_SIZE 3                // 字符大小
#define SCREEN_CENTER_X 120        // 屏幕中心X坐标(240x240屏幕)
#define SCREEN_CENTER_Y 120        // 屏幕中心Y坐标(240x240屏幕)

void setup() {
    Serial.begin(9600);            // 初始化串口通信
    Serial.println("Rotating 'Hello world' with Random Colors!");

    tft.begin();                   // 初始化显示屏
    tft.setRotation(2);            // 设置显示屏方向
    tft.fillScreen(GC9A01A_BLACK); // 清屏
    randomSeed(analogRead(0));     // 初始化随机数种子
}

void loop() {
    // 随机生成颜色
    uint16_t randomColor = random(0x0000, 0xFFFF); // RGB565随机颜色

    // 清屏
    tft.fillScreen(GC9A01A_BLACK);

    // 显示四面旋转的文本
    for (int rotation = 0; rotation < 360; rotation += 90) { // 四面旋转
        tft.setRotation(rotation / 90);                     // 设置屏幕旋转方向
        tft.setTextColor(randomColor);                      // 设置随机颜色
        tft.setTextSize(TEXT_SIZE);                         // 设置字体大小
        tft.setCursor(SCREEN_CENTER_X - (6 * TEXT_SIZE), SCREEN_CENTER_Y - (8 * TEXT_SIZE));
        tft.print("Hello world");
    }

    delay(DELAY_TIME); // 延迟
}

代码功能说明

1、屏幕初始化:

使用tft.begin()和tft.setRotation()进行屏幕硬件初始化并设置默认旋转方向。

屏幕清屏操作由tft.fillScreen(GC9A01A_BLACK)实现。

2、随机颜色生成:

使用random(0x0000, 0xFFFF)生成RGB565格式的随机颜色,使每次动画展现不同的色彩。

3、文本绘制:

使用tft.setTextSize(TEXT_SIZE)将字体大小设置为3号。

tft.setCursor()动态调整文本绘制的位置,使文本保持居中。

4、四面旋转:

通过for循环设置屏幕的旋转角度,分别为0°、90°、180°和270°。

每个方向都显示随机颜色的“Hello world”文本,形成旋转效果。

5、动画节奏:

使用delay(DELAY_TIME)设置每次动画的间隔时间为300毫秒,使旋转效果舒适流畅。

6、效果描述

屏幕中心显示3号字母“Hello world”,随机生成字体颜色。

文本以屏幕为基准,在四个方向(0°、90°、180°、270°)进行旋转。

颜色动态变化,旋转效果流畅,适合展示炫酷的视觉动画。

实验场景图 动态图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值