Arduinoとジョイスティックでインタラクティブゲーム – LEDフィードバック付き
必要な部品
- ブレッドボード ×1
- ジャンパーワイヤー ×1
- LED(汎用) ×1
- Arduino UNO ×1
- USB-A to B ケーブル ×1
- アナログジョイスティック(汎用) ×1
プロジェクト概要
汎用アナログジョイスティックのX/Y軸値(+X, -X, +Y, -Y)とボタン入力をArduinoで読み取り、5つのLEDで方向を表示するシンプルなゲームです。ジョイスティックを倒した方向のLEDが点灯し、ボタン押下で別のLEDが点灯します。
コード
#define joyX A0
#define joyY A1
int button = 2;
int buttonState = 0;
int buttonState1 = 0;
void setup() {
pinMode(7, OUTPUT); // ボタン押下時のLED
pinMode(button, INPUT);
digitalWrite(button, HIGH); // 内部プルアップ有効化
Serial.begin(9600);
pinMode(8, OUTPUT); // 上
pinMode(9, OUTPUT); // 右
pinMode(10, OUTPUT); // 左
pinMode(11, OUTPUT); // 下
}
void loop() {
int xValue = analogRead(joyX);
int yValue = analogRead(joyY);
Serial.print(xValue);
Serial.print("\t");
Serial.println(yValue);
buttonState = digitalRead(button);
Serial.println(buttonState);
// 左
if (xValue >= 0 && yValue <= 10) {
digitalWrite(10, HIGH);
} else {
digitalWrite(10, LOW);
}
// 上
if (xValue <= 10 && yValue >= 500) {
digitalWrite(11, HIGH);
} else {
digitalWrite(11, LOW);
}
// 右
if (xValue >= 1020 && yValue >= 500) {
digitalWrite(9, HIGH);
} else {
digitalWrite(9, LOW);
}
// 下
if (xValue >= 500 && yValue >= 1020) {
digitalWrite(8, HIGH);
} else {
digitalWrite(8, LOW);
}
// 中央付近(右・下消灯)
if (xValue >= 1020 && yValue >= 1020) {
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}
// ボタン押下(LOWアクティブ)
if (buttonState == LOW) {
Serial.println("Switch = High");
digitalWrite(7, HIGH);
} else {
digitalWrite(7, LOW);
}
buttonState1 = digitalRead(7);
Serial.println(buttonState1);
delay(100);
}
回路図
配線が複雑なため、回路図で確認してください。
※ ジョイスティックのセンター値は約512付近です。しきい値(10, 500, 1020等)は実機で調整してください。
製造プロセス
- チェス:古代起源から現代製造まで——専門家の概観
- ピンボール:歴史、設計、製造——クラシックアーケードゲームの全貌
- サッカーボール:古代ゲームから現代イノベーションへ
- アメリカンフットボールの進化と職人技:古代競技から現代NFL基準まで
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- Arduino UNOとMAX7219で作るUFOアタックゲーム – レトロなドットマトリクスシューティング
- Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
- 3D RGB アルドゥクロック:Bluetooth対応LED時計(RTC内蔵)
- 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
- Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」