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

Arduino UNO 驱动 16x2 LCD 实现动画与小游戏

元器件清单

Arduino UNO×1
1602 字符型 LCD (16列×2行)×1
10kΩ 电位器(对比度调节)×1
220Ω 电阻(背光限流)×1
面包板、跳线若干×1

软件工具

Arduino IDE

项目简介

本教程从零开始,讲解如何用 Arduino 控制 1602 LCD 显示文本、滚动字符、自定义字符(如恐龙、箭头),并最终实现一个简单的躲避游戏。所有代码基于官方 LiquidCrystal 库,可直接移植到其他尺寸字符屏。

LCD 接线

LCD 引脚功能连接
1VSS面包板负极轨 (GND)
2VDD面包板正极轨 (5V)
3VO电位器中间脚 (两侧分别接 5V/GND)
4RSArduino D12
5R/WGND (只写模式)
6EArduino D11
11-14D4-D7Arduino D4-D7
15A5V 串联 220Ω
16KGND

先不接数据线通电,若底行亮起方块说明屏幕正常。随后接上数据线上传测试代码,调节电位器直到显示 “Working”。

核心代码解析

LiquidCrystal lcd(12, 11, 4, 5, 6, 7); // RS, E, D4, D5, D6, D7
lcd.begin(16, 2);        // 初始化 16列2行
lcd.setCursor(0, 1);     // 光标移至第2行第1列 (0-index)
lcd.print("Welcome");    // 打印字符串

滚动文本

利用指针偏移实现字符从右向左滚动:

void loop() {
  char msg[] = "Scrolling text!";
  for (int n = 15; n >= -14; n--) {
    lcd.clear();
    lcd.setCursor(n, 1);
    if (n < 0) lcd.print(msg - n); // 指针偏移
    else lcd.print(msg);
    delay(250);
  }
}

自定义字符

每个字符占 5×8 像素,用 8 字节数组定义:

byte dino[8] = {
  B01110, B01110, B01100, B01111,
  B11101, B01010, B01010, B01010
};
lcd.createChar(0, dino); // 将字符存入 CGRAM 位置 0
lcd.write(byte(0));      // 显示自定义字符

在线工具:LCD Character Creator

射箭动画

定义箭头、箭身、箭尾三个自定义字符,在循环中依次写入并左移,形成飞行效果。残影现象属正常,因 LCD 响应时间导致。

躲避游戏

玩法:英雄(自定义字符)固定在第1列,箭从右向左飞来。按按钮(接 D2, 上拉输入)让英雄跳到第0行躲避,松开回第1行。得分随时间递增,被击中游戏结束。

关键技术:

完整游戏代码见原文 pre 块,包含初始化、主循环、绘制英雄、中断处理、游戏结束显示分数等函数。

原理图

Arduino UNO 驱动 16x2 LCD 实现动画与小游戏

制造工艺

  1. 自制 Arduboy 克隆掌机:从面包板到专业 PCB
  2. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  3. Arduino + DHT11 + 以太网盾板温湿度数据记录仪
  4. Python 3 控制 Arduino UNO - 串口通信点亮内置 LED 入门教程
  5. Arduino Nano 驱动 128x64 OLED 实时运行康威生命游戏 (元胞自动机)
  6. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
  7. 打造可靠的 Arduino 气象站:DHT 传感器 + LCD + RTC
  8. 用蜂鸣器和摇杆制作经典 Arduino LCD 街机游戏
  9. MKR1000 接入 Azure IoT:DHT22 温湿度实时上云监控
  10. 手把手教你打造树莓派 3 + Arduino 笔记本电脑
  11. 自制 AI 助手机器人:Arduino 与 Python 协同实现语音交互与肢体动作
  12. Arduino传感器:类型、应用与实战项目