工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino Unoで作るLEDモグラ叩きゲーム - ジョイスティック操作のインタラクティブ作品

必要な部品と用品

部品 数量
Arduino UNO 1
LED(赤、緑、黄含む) 7
抵抗 220Ω 7
アナログジョイスティック(汎用) 1
ジャンパーワイヤー 8
オス/メス ジャンパーワイヤー 4

プロジェクト概要

初めてのArduinoプロジェクトとして、LEDとジョイスティックを使った「モグラ叩き」風ゲームを作成しました。初期のチュートリアルで学んだLED制御の知識を応用しています。

ゲームルール

ジョイスティック入力の処理

アナログジョイスティックのX/Y軸は0〜1023(実測値)の範囲を取ります。このプロジェクトでは4方向のみ必要なため、最大値(0または1023)を検出して方向を判定しています。

// X軸: 0=左, 1023=右
// Y軸: 0=上, 1023=下
// 内部的に 1:左, 2:右, 3:上, 4:下 にマッピング

シリアルモニターで実測値を確認し、閾値調整も可能です。

難易度設定

反応時間(ミリ秒)で4段階の難易度を定義。お好みで調整可能です。

const int easy = 1000;
const int medium = 500;
const int hard = 325;
const int stupid = 250;  // 最速

スケッチ

// Whack a LED
// Joystick variables
int sX = A0;  // joystick X axis
int sY = A1;  // joystick Y axis
int sSX, sSY, sS;

// Game variables
int rNum;       // random LED index
int wins = 0;   // consecutive wins
int highScore = 0;

// Difficulty constants (reaction time in ms)
const int easy = 1000;
const int medium = 500;
const int hard = 325;
const int stupid = 250;

int ledPins[] = {5, 2, 4, 3, 6, 7, 8};  // LED pins
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);
  digitalWrite(ledPins[rNum], HIGH);  // モグラ出現
  delay(stupid);              // 難易度に応じた制限時間

  // ジョイスティック読み取り
  sSX = analogRead(sX);
  delay(100);
  sSY = analogRead(sY);

  // 入力を4方向に変換
  sS = 0;
  switch (sSX) {
    case 0:   sS = 1; break;  // Left
    case 1023: sS = 2; break; // Right
  }
  switch (sSY) {
    case 0:   sS = 3; break;  // Up
    case 1023: sS = 4; break; // Down
  }

  digitalWrite(ledPins[rNum], LOW);  // モグラ消灯

  // 判定: sS-1 が rNum と一致すれば正解(配列インデックス調整)
  if (sS - 1 == rNum) {
    wins++;
    // 緑LED点滅(正解)
    for (int k = 0; k <= 3; k++) {
      digitalWrite(ledPins[4], HIGH); delay(50);
      digitalWrite(ledPins[4], LOW);  delay(50);
    }
  } else {
    // ハイスコア更新チェック
    if (wins > highScore) {
      highScore = wins;
      wins = 0;
    }
    // 赤LED点滅(不正解)
    for (int i = 0; i <= 3; i++) {
      digitalWrite(ledPins[5], HIGH); delay(50);
      digitalWrite(ledPins[5], LOW);  delay(50);
    }
    // 黄色LEDでハイスコア表示
    for (int w = 0; w < highScore; w++) {
      digitalWrite(ledPins[6], HIGH); delay(200);
      digitalWrite(ledPins[6], LOW);  delay(200);
    }
  }
}

回路図

ジョイスティックは5ピン(GND, +5V, VRx, VRy, SW)のうち4ピンを使用。GNDと+5VをArduinoのGND/5Vに、VRxをA0、VRyをA1に接続します。

Arduino Unoで作るLEDモグラ叩きゲーム - ジョイスティック操作のインタラクティブ作品
Arduino Unoで作るLEDモグラ叩きゲーム - ジョイスティック操作のインタラクティブ作品

製造プロセス

  1. ガスランタン:進化、設計、現代製造
  2. レーザーポインター:設計、製造、安全性の概要
  3. 懐中電灯:発明から現代革新まで
  4. 万華鏡:ブレッサーの科学から現代デザインへ
  5. 半導体レーザー:現代技術を支える精密光生成
  6. 写真プロセスの芸術と科学:ダゲレオタイプから現代フィルムまで
  7. 信号機:工学、歴史、未来の革新
  8. 発光ダイオード(LED):誕生から100年寿命へ
  9. 車のダッシュボード警告灯・表示灯完全ガイド|色別意味と対処法
  10. LEDストリップアクセサリー完全ガイド:接続、制御、カスタマイズ
  11. SengledスマートLED電球の分解調査:Zigbee接続の技術的レビュー