亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)

元器件清单

元器件数量备注
Arduino UNO1
1.17 英寸 TFT LCD 屏 (SPI 接口)1分辨率 160×128
Micro SD 卡1存放 BMP 图片

所需软件

硬件接线

TFT 引脚Arduino UNO 引脚
VCC (5V)5V
GNDGND
MISO12
SCK13
MOSI11
LCD CS10
SD CS4
D/C9
RESET8
BL (背光)5V (或 PWM 引脚调光)

SD 卡图片要求

Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
接线示意图
Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
SD 卡根目录放置 arduino.bmp

完整代码

// CreaTechWeb: Arduino TFT 显示 SD 卡 BMP 图片
// https://createchweb.com/displaying-an-image-on-a-tft-screen-with-arduino/

#include 
#include 
#include   // Arduino 自带 TFT 库

// Uno 引脚定义
#define sd_cs  4
#define lcd_cs 10
#define dc     9
#define rst    8

// Leonardo 引脚定义 (如使用 Leonardo 请取消注释下面并注释上面)
// #define sd_cs  8
// #define lcd_cs 7
// #define dc     0
// #define rst    1

TFT TFTscreen = TFT(lcd_cs, dc, rst);
PImage logo;  // 图片对象

void setup() {
  // 初始化屏幕
  TFTscreen.begin();
  TFTscreen.background(255, 255, 255); // 白色背景
  TFTscreen.stroke(0, 0, 255);         // 蓝色文字
  TFTscreen.println();
  TFTscreen.println(F("Arduino TFT Bitmap Example"));
  TFTscreen.stroke(0, 0, 0);           // 黑色文字
  TFTscreen.println(F("Open serial monitor"));
  TFTscreen.println(F("to run the sketch"));

  // 串口调试
  Serial.begin(9600);
  while (!Serial); // 等待串口连接 (仅原生 USB 设备需要)

  // 清屏准备显示图片
  TFTscreen.background(255, 255, 255);

  // 初始化 SD 卡
  Serial.print(F("Initializing SD card..."));
  if (!SD.begin(sd_cs)) {
    Serial.println(F("failed!"));
    return;
  }
  Serial.println(F("OK!"));

  // 重新初始化屏幕
  TFTscreen.begin();
  TFTscreen.background(255, 255, 255);

  // 加载图片
  logo = TFTscreen.loadImage("arduino.bmp");
  if (!logo.isValid()) {
    Serial.println(F("error while loading arduino.bmp"));
  }
}

void loop() {
  // 图片加载失败则不执行
  if (!logo.isValid()) return;

  Serial.println(F("drawing image"));

  // 随机位置绘制 (确保不超出屏幕)
  int x = random(TFTscreen.width() - logo.width());
  int y = random(TFTscreen.height() - logo.height());

  // 绘制图片
  TFTscreen.image(logo, x, y);

  delay(1500); // 1.5 秒切换一次位置
}

运行效果

上传代码后,打开串口监视器 (9600 波特率),屏幕会在随机位置显示 BMP 图片,每 1.5 秒换一个位置。若图片加载失败,串口会提示错误信息。

Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
屏幕显示 Arduino Logo 效果

常见问题排查

扩展应用

制造工艺

  1. Arduino Nano飞行模拟2020控制面板——LCD与CDI显示
  2. 自制 Arduino 伊斯兰祷告时间实时时钟
  3. Arduino 2.4″ TFT LCD 扩展板显示 SD 卡 BMP 图片教程
  4. 自制便携式视觉暂留显示器:Arduino UNO 与 ATtiny85
  5. Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
  6. 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目
  7. Arduino GPS与TFT触摸屏扩展板:实时定位显示项目
  8. 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南
  9. 打造可靠的 Arduino 气象站:DHT 传感器 + LCD + RTC
  10. Arduino Pro Micro 实现 HID UPS:将"哑"电源升级为 USB 智能后备电源
  11. 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟
  12. Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试