【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
项目之九十五:GC9A01园屏之通过 正弦波函数模拟动态心电图
实验开源代码
/*
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
项目之九十五:GC9A01园屏之通过 正弦波函数模拟动态心电图
*/
// GC9A01---------- 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 提供的图形库,支持基本图形绘制
#include "Adafruit_GC9A01A.h" // 适用于 GC9A01 屏幕驱动的库(专为圆形 TFT 屏设计)
// 定义显示屏连接的引脚(对应 ESP32)
#define TFT_CS 4 // CS(片选)引脚连接 ESP32 的 D4
#define TFT_DC 2 // DC(数据/命令选择)引脚连接 ESP32 的 D2
#define TFT_RST -1 // RST(复位)未使用,设为 -1 表示不连接
// 创建屏幕对象,传入控制引脚
Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
// 定义屏幕相关参数
#define SCREEN_WIDTH 240 // 屏幕宽度(像素)
#define SCREEN_HEIGHT 240 // 屏幕高度(像素)
#define CENTER_Y SCREEN_HEIGHT / 2 // Y轴中点,用于确定波形的垂直中心线
#define WAVE_WIDTH SCREEN_WIDTH // 波形宽度,与屏幕宽度一致
#define WAVE_HEIGHT 70 // 波形幅度,即最大上下偏移像素
#define SPEED 20 // 控制波形横向移动速度
float phase = 0;// 控制波形起始相位(决定波的起点),用于产生移动效果
// Arduino 初始化函数,仅运行一次
void setup() {
Serial.begin(115200);// 初始化串口,用于调试信息输出
tft.begin(); // 初始化 TFT 屏幕
tft.setRotation(2); // 设置屏幕方向(可调整 0~3)
}
// Arduino 主循环函数,重复执行
void loop() {
tft.fillScreen(tft.color565(0, 0, 0));// 清空屏幕,用黑色背景
// 遍历屏幕宽度的每一个 X 像素位置,绘制波形
for (int x = 0; x < WAVE_WIDTH; x++) {
float radian = (x + phase) * M_PI / 180;// 将 X 坐标加上相位后转为弧度值
int y = CENTER_Y + WAVE_HEIGHT * sin(radian);// 使用正弦函数生成波形 Y 值
tft.drawPixel(x, y, tft.color565(255, 0, 0));// 在计算出的 (x, y) 坐标绘制红色点
}
// 增加相位,产生波形移动的动画效果
phase += SPEED;
if (phase >= 360) {
phase = 0;// 相位归零,避免数值过大导致浮点溢出
}
delay(50);// 控制刷新频率,影响动画流畅度(数值越小越快)
}
【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
这段代码的核心功能是 动态心率动画,它通过 正弦波函数 模拟心跳,并在屏幕上 不断跳动,形成流畅的视觉化效果。代码结构
1️⃣ 初始化屏幕
• 使用 Adafruit_GC9A01A 控制 TFT 显示屏,设定黑色背景。
2️⃣ 绘制心率波形
• sin() 计算 波形曲线,模拟脉搏跳动。
• drawPixel() 在屏幕上绘制 红色心率曲线,形成动态变化。
3️⃣ 更新波形动画
• phase 控制 波形滚动,每次循环增加一定相位,使波形移动。
• if (phase >= 360) { phase = 0; } 保持循环,使心率动画不断流畅更新。
4️⃣ 持续循环
• delay(50); 控制动画节奏,使心率跳动平滑、自然。
最终效果
屏幕显示动态心率波形,模拟脉搏跳动
动画流畅,视觉冲击力强
黑色背景 + 红色心率曲线,让界面清晰直观
【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
实验场景图动态图【花雕学编程】Arduino动手做(249)--GC9A01模拟动态心电图
页:
[1]