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

Arduino Nano 驱动 2.8″ TFT 显示 JPEG 图片与 RGB565 视频教程

项目概览

利用 Arduino Nano 配合 320×240 SPI TFT 屏幕(带触摸)与 Micro SD 卡,实现 JPEG 图片浏览与 RGB565 原始视频播放。核心库 YATFT(GitHub: YATFT/YATFT)封装了底层 SPI 时序与 JPEG 硬件解码,配合 XPT2046_Touchscreen 触摸库,提供播放/暂停/停止触控交互。

硬件清单

SD 卡素材准备

图片

视频转码

需提前在 PC 用 ffmpeg 转为 RGB565 原始流:

ffmpeg -i input.mp4 -s 320x240 -pix_fmt rgb565 output.rgb

核心代码逻辑

完整代码见文末 PhotoAndVideoPlay.ino,关键流程:

  1. 初始化:tft.begin(0x4391,-8) 驱动屏幕,sdc.FSInit() 挂载 SD 卡。
  2. 轮询文件:FindFirst("*.*") / FindNext() 遍历根目录。
  3. 识别类型:GetFileType() 判断 JPEG 或 RGB。
  4. 切换色彩模式:JPEG 需 tft.SetYUV(),RGB 需 tft.SetRGB(),切换时会有 1 帧绿闪,属正常现象。
  5. 解码显示:
    • JPEG:sdc.JPEGReadFromSD(&jpeg_decode, 0, 0, 320, 240) 硬件解码直推屏幕。
    • RGB:sdc.RGBReadFromSD(pFile, &ScanTouch) 逐帧 DMA 传输,回调 ScanTouch() 处理触控。
  6. 触控交互:视频播放时,屏幕下方三区域分别对应「停止/暂停/播放」,ScanTouch() 返回 mode 控制播放状态机。

关键函数片段

// 触控坐标映射(需根据实测 ADC 范围校准)
uint8_t ScanTouch() {
  SPI.begin();
  if (ts.touched()) {
    TS_Point p = ts.getPoint();
    delay(3);
    SPI.end();
    // ADC 原始值 → 屏幕坐标
    if (p.x < 450) p.x = 450;
    if (p.y < 500) p.y = 500;
    uint16_t x = 320 - (p.x - 450) * 10 / 106;
    uint16_t y = 240 - (p.y - 500) * 10 / 140;

    if (x < 130 && y > 100 && y < 140) return 1;      // 停止
    if (x > 140 && x < 180 && y > 100 && y < 140) return 2; // 暂停
    if (x > 190 && y > 100 && y < 140) return 0;      // 播放
  }
  SPI.end();
  return mode;
}

性能与局限

进阶优化建议

资源链接

制造工艺

  1. 树莓派配合 MCP3008 ADC 与 Zabbix 监控模拟传感器:分步指南
  2. Kuman 3.5″ TFT 显示屏在 RetroPie 上安装全步骤指南
  3. ILI9341 2.4 英寸 TFT 触摸屏扩展板位图动画专业指南
  4. 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
  5. Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
  6. 全息光场3D显示:为AR带来清晰无畸变视觉
  7. 新型 HDMI-APIX3 转换器赋能汽车视频与 ADAS 测试
  8. DATA MODUL 推出 23.1 英寸超薄 TFT 显示器,支持智能 Wi-Fi 控制
  9. 以移动技术变革制造:数据、语音、视频与定位解决方案
  10. 法兰DN/PN标识全解析:公称直径与公称压力的国际标准对照
  11. K 2019展示前沿回收机械与可持续包装创新
  12. 注塑表面处理大全:SPI与VDI标准深度解析