Arduino 自动化 Chrome 恐龙游戏 - LDR 光敏电阻 + Python 实现全自动跳跃
元器件清单
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控板 |
| LDR 光敏电阻 (5 MΩ) | 1 | 检测屏幕障碍物 |
| 10kΩ 电阻 | 1 | LDR 分压电阻(原文提示需添加) |
| 跳线若干 | - | 面包板连接 |
项目简介
宅家无聊?来玩 Chrome 恐龙游戏!但手动玩久了也腻,何不让 Arduino 帮你自动通关?本项目利用 LDR 光敏电阻检测屏幕上障碍物出现时的亮度变化,Arduino 读取模拟值并通过串口发送信号,Python 脚本接收后模拟按键让恐龙自动跳跃。


硬件连接
将 LDR 与 10kΩ 电阻串联分压,连接到 Arduino A0 引脚,另一端分别接 5V 和 GND。关键步骤:用胶带将 LDR 固定在显示器恐龙游戏区域的障碍物出现位置(通常是屏幕右侧地平线上方),确保能准确检测到仙人掌/鸟类通过时的亮度变化。


Arduino 代码
// Arduino Dino Game 自动检测障碍物
int sensorPin = A0; // LDR 接 A0
int sensorValue = 0; // 存储读取值
int thresholdValue = 43; // 阈值,需根据实测调整
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
// Serial.println(sensorValue); // 首次使用取消注释以观察数值并确定阈值
if (sensorValue <= thresholdValue) { // 检测到障碍物(亮度降低)
Serial.println(1); // 发送跳跃信号
}
delay(50); // 采样间隔
}
校准方法:打开串口监视器,观察无障碍物时的数值,再让障碍物通过时的数值,将阈值设在两者之间(如 43)。
Python 自动化脚本
需安装依赖:pip install pyserial pyautogui
import subprocess
import time
import pyautogui
import serial
# 启动浏览器打开恐龙游戏网页版(Chrome 用户可改为 Chrome 路径)
subprocess.call([r'C:\Program Files\Mozilla Firefox\Firefox.exe', '-new-tab', 'https://chromedino.com/'])
time.sleep(6) # 等待页面加载
print("All set :)")
ser = serial.Serial('COM4') # 修改为你的 Arduino 串口号
ser.baudrate = 9600
while True:
h1 = ser.readline()
if h1:
ss = int(h1.decode('utf-8').strip())
if ss == 1: # 收到跳跃信号
print("Oh :< Jump!!")
pyautogui.press('up') # 模拟按下上键/空格
进阶玩法
- 增加第二个 LDR 检测飞鸟(需区分高度),实现蹲下躲避
- 用舵机物理按下空格键,脱离 Python 依赖
- 优化算法:增加动态阈值适应不同环境光
GitHub 仓库:https://github.com/rafitc/arduDino
原理图

制造工艺
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- TeleBall:自制 Arduino 掌上复古游戏机(打砖块 + 双人网球)
- 用 Arduino UNO 和 OLED 显示屏制作经典 Pong 游戏:分步教程
- DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
- Arduino Uno 自动化乐高星球大战发射器
- Arduino 触控打砖块:在 2.4 英寸 TFT LCD 上重现经典街机
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
- Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
- 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
- 无线Arduino编程盾:HC-05蓝牙模块实现免USB线烧录