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

Arduino UNO 打造 LED 打地鼠游戏:摇杆交互的趣味电子项目

组件与物料清单

组件数量
Arduino UNO1
LED(红、绿、黄等)7
220Ω 电阻7
模拟摇杆模块1
公对公跳线8
公对母跳线4

项目简介

这是我的第一个 Arduino 项目,基于早期学习的 LED 控制与基础语法完成。游戏规则模仿经典“打地鼠”:

Arduino UNO 打造 LED 打地鼠游戏:摇杆交互的趣味电子项目

摇杆信号处理

模拟摇杆 X/Y 轴输出 0~1023(实测最大值为 1023),通过 switch-case 将极值映射为 4 个离散方向:

中间区域数值被忽略,仅识别四个极限方向,逻辑简单直观。

完整代码

// Whack-a-LED (打地鼠游戏)
// 摇杆引脚
int sX = A0; // X 轴
int sY = A1; // Y 轴
int sSX, sSY, sS; // 读取值与转换后方向

// 游戏状态
int rNum;     // 随机亮起的地鼠编号 0~3
int wins = 0; // 当前连续命中数
int highScore = 0; // 历史最高分

// 难度常量(反应时间 ms)
const int easy = 1000;
const int medium = 500;
const int hard = 325;
const int stupid = 250; // 当前使用最难

// LED 引脚数组:[红, 绿, 地鼠1, 地鼠2, 地鼠3, 地鼠4, 黄]
int ledPins[] = {5, 2, 4, 3, 6, 7, 8};
int pinCount = 7;

void setup() {
  Serial.begin(9600);
  pinMode(sX, INPUT);
  pinMode(sY, INPUT);
  for (int i = 0; i < pinCount; i++) pinMode(ledPins[i], OUTPUT);
}

void loop() {
  rNum = random(4);           // 0~3 对应 4 个地鼠 LED
  delay(1000);                // 间隔 1 秒出现下一个
  digitalWrite(ledPins[rNum + 1], HIGH); // 地鼠 LED 索引偏移 1
  delay(stupid);              // 反应时间窗口

  // 读取摇杆
  sSX = analogRead(sX);
  delay(100);
  sSY = analogRead(sY);

  // 映射方向
  sS = 0;
  switch (sSX) {
    case 0:   sS = 1; break; // 左
    case 1023: sS = 2; break; // 右
  }
  switch (sSY) {
    case 0:   sS = 3; break; // 上
    case 1023: sS = 4; break; // 下
  }

  digitalWrite(ledPins[rNum + 1], LOW); // 熄灭地鼠

  // 判定
  if (sS - 1 == rNum) { // 命中
    wins++;
    for (int k = 0; k <= 3; k++) { // 绿灯闪烁 4 次
      digitalWrite(ledPins[1], HIGH); delay(50);
      digitalWrite(ledPins[1], LOW);  delay(50);
    }
  } else { // 失误
    if (wins > highScore) highScore = wins;
    wins = 0;
    for (int i = 0; i <= 3; i++) { // 红灯闪烁 4 次
      digitalWrite(ledPins[0], HIGH); delay(50);
      digitalWrite(ledPins[0], LOW);  delay(50);
    }
    // 黄灯闪烁显示最高分
    for (int w = 0; w < highScore; w++) {
      digitalWrite(ledPins[6], HIGH); delay(200);
      digitalWrite(ledPins[6], LOW);  delay(200);
    }
  }
}

原理图

摇杆 5 引脚中使用 4 个:GND、+5V、VRx(A0)、VRy(A1)。LED 与电阻串联后接对应数字引脚,原理图与实物接线一致。

Arduino UNO 打造 LED 打地鼠游戏:摇杆交互的趣味电子项目
Arduino UNO 打造 LED 打地鼠游戏:摇杆交互的趣味电子项目

欢迎提出改进建议,例如增加难度选择菜单、声音提示、LCD 显示分数等!

制造工艺

  1. 煤气灯:演变、设计与现代制造
  2. 激光笔:设计、制造与安全概览
  3. 手电筒:从诞生到现代创新
  4. 万花筒:从布鲁斯特科学发明到现代设计艺术
  5. 半导体激光器:现代科技的精密光源
  6. 摄影工艺的艺术与科学:从达盖尔银版到现代胶片
  7. 交通信号灯:工程原理、历史沿革与未来创新
  8. 发光二极管:从诞生到百年寿命
  9. 可见光通信 (Li-Fi) 实验:Arduino 实现 LED 无线数据传输
  10. 仪表盘灯光全解码:颜色含义、常见报警灯与指示灯图文详解
  11. LED灯带配件大全:连接、控制与定制化布线
  12. Sengled Element智能LED灯泡拆解:Zigbee连接与内部架构深度解析