Arduinoで自動化するChrome恐竜ゲーム – LDRとPythonで障害物を検知してジャンプ
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| LDR(光依存抵抗)5MΩ | 1 | 画面の明暗を検知 |
| 抵抗(LDR用、適切な値) | 1 | 分圧回路用 |
プロジェクト概要
Chromeのオフライン恐竜ゲームをArduinoとLDR(光センサー)で自動プレイさせるプロジェクトです。画面に貼り付けたLDRが障害物(サボテンや鳥)の影を検知し、Pythonスクリプト経由でスペースキーを自動送信してジャンプさせます。


仕組み
- Arduino側: LDRで画面の明度を読み取り、閾値以下(障害物あり)ならシリアルで「1」を送信
- Python側: シリアルを監視し、「1」を受信したら
pyautoguiで↑キー(ジャンプ)を送信
Arduinoの配線とスケッチ
配線
LDRと抵抗で分圧回路を作り、中点をA0に接続します。LDRをモニターの障害物が通る位置に固定してください。


Arduinoスケッチ
// Arduino Dino Game
int sensorPin = 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);
}
Pythonスクリプト
必要なライブラリ: pyserial, pyautogui
import subprocess
import time
import pyautogui
import serial
# ブラウザでゲームを開く(Firefoxの例、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') # 環境に合わせて変更
ser.baudrate = 9600
while True:
line = ser.readline()
if line:
val = int(line.decode('utf-8').strip())
if val == 1:
print("Oh :< Jump!!")
pyautogui.press('up')
調整のポイント
- Arduinoの
thresholdValueは、障害物があるときのアナログ値を確認して設定 - LDRの位置は試行錯誤で最適な場所に固定
- PythonのCOMポート番号を環境に合わせて変更
- 鳥も避けたい場合は、もう1つLDRを上部に追加して検知ロジックを拡張可能
リソース
- GitHub: rafitc/arduDino
製造プロセス
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- TeleBall: 自作レトロ携帯ゲーム機 – Arduinoでブロック崩し&テニス
- Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- Arduino Unoで作る自動発射レゴ・スターウォーズ砲台
- Arduinoタッチブレークアウトゲーム:2.4インチTFT LCDでクラシックアーケードを再現
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
- Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ