Arduino + 模拟摇杆互动游戏:五向 LED 反馈
所需元件
- Arduino UNO × 1
- 模拟摇杆模块(X/Y 两轴 + 按键)× 1
- LED × 5(上/下/左/右/按键)、面包板、跳线
接线对照
| 摇杆引脚 | Arduino |
|---|---|
| VRx | A0 |
| VRy | A1 |
| SW | D2(内部上拉) |
| VCC/GND | 5V/GND |
LED 分别接 D7(按键)、D8(上)、D9(右)、D10(左)、D11(下),串联 220 Ω 电阻。
代码
#define joyX A0
#define joyY A1
const int btnPin = 2;
const int LED_UP = 8;
const int LED_RIGHT = 9;
const int LED_LEFT = 10;
const int LED_DOWN = 11;
const int LED_BTN = 7;
void setup() {
pinMode(btnPin, INPUT_PULLUP);
pinMode(LED_UP, OUTPUT);
pinMode(LED_DOWN, OUTPUT);
pinMode(LED_LEFT, OUTPUT);
pinMode(LED_RIGHT, OUTPUT);
pinMode(LED_BTN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int x = analogRead(joyX);
int y = analogRead(joyY);
int btn = digitalRead(btnPin);
// 串口调试
Serial.print(x); Serial.print('\t'); Serial.println(y);
// 四向判定(阈值约 10/1020/500)
digitalWrite(LED_LEFT, (x <= 10 && y >= 500) ? HIGH : LOW);
digitalWrite(LED_RIGHT, (x >= 1020 && y >= 500) ? HIGH : LOW);
digitalWrite(LED_UP, (x >= 500 && y >= 1020) ? HIGH : LOW);
digitalWrite(LED_DOWN, (x >= 1020 && y >= 1020) ? HIGH : LOW);
// 对角同时触发时熄灭对应灯
if (x >= 1020 && y >= 1020) {
digitalWrite(LED_UP, LOW);
digitalWrite(LED_RIGHT, LOW);
}
// 按键
digitalWrite(LED_BTN, (btn == LOW) ? HIGH : LOW);
delay(100);
}
玩法扩展
- 将 LED 替换为蜂鸣器、舵机、OLED 显示方向箭头。
- 增加“摇杆按下 + 方向”组合动作,做迷宫游戏或机械臂控制。
- 用
map()将 0~1023 映射为 -255~255,直接驱动电机差速转向。
制造工艺
- 国际象棋:从古代起源到现代制造的专家概览
- 弹球机:经典街机游戏的历史、设计与制造
- 足球:从古老游戏到现代创新
- 美式橄榄球的演变与工艺:从古老游戏到现代NFL标准
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- Arduino UNO + MAX7219 自制《UFO攻击》复古射击游戏机
- 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路