Arduinoで作る野球ゲームの部品セット 紹介ページ
トラ技ジュニア 2014年1・2月号の記事「ひとりでできるマイコンArduino ~電子回路のプログラムもコピペッペ~」で紹介されている「LED野球ゲーム」にピッタリのキットです。
キット内容物
- Arduino Uno
 - ブレッドボード
 - 柔らかいジャンパ 1袋(10本入り)
 - LED5個(赤4個、緑1個)
 - 抵抗1kΩ 1個
 - タクトスイッチ 1個
 - 圧電スピーカ 1個
 - USBケーブル
 
野球ゲーム 回路図

実際の部品をブレッドボード上でどうつなぐといいかはトラ技ジュニア 12・1月号を見てみてください。
野球ゲーム スケッチ
野球ゲーム スケッチ baseball.zip
ダウンロードしたbaseball.zipファイルを展開して、出てきた「baseball」フォルダをスケッチブックの保存場所フォルダにコピーしてArduino IDEから開いてください。
スケッチブックの保存場所は、Arduino IDEの[ファイル]-[環境設定](Windowsの場合)または[Arduino]-[環境設定](Macの場合)でわかります。
#define BUTTON   2
#define SPEAKER  3
#define BALL5    9
#define BALL4    10
#define BALL3    11
#define BALL2    12
#define BALL1    13
#define DURATION 500000
unsigned long duration = DURATION;
int level = 0;
int strike = 0;
int last = 0;
void setup() {
  pinMode(BALL1, INPUT);
  pinMode(BALL2, INPUT);
  pinMode(BALL3, INPUT);
  pinMode(BALL4, INPUT);
  pinMode(BALL5, INPUT);
  pinMode(SPEAKER, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  Serial.begin(9600);
}
boolean ball(int pin) {
  tone(SPEAKER, 880, 20);
  pinMode(pin, OUTPUT);
  digitalWrite(pin, HIGH);
  last = pin;
  unsigned long start = micros();
  while (micros() - start < duration) {
    if (digitalRead(BUTTON) == LOW) {
      return true;
    }
  }
  digitalWrite(pin, LOW);
  pinMode(pin, INPUT);
  return false;
}
void loop() {
  Serial.print("Level: ");
  Serial.println(level);
  Serial.print("Strike: ");
  Serial.println(strike);
  Serial.println("Hit the button to start");
  // ボタンが押されてから離されるのを待つ。
  while (digitalRead(BUTTON) == HIGH) {
  }
  while (digitalRead(BUTTON) == LOW) {
  }
  delay(50);
  // ボールを投げる。
  if (ball(BALL1) || ball(BALL2) || ball(BALL3) || ball(BALL4)) {
    // ボタンを押したのが早すぎる。
    ++strike;
    tone(SPEAKER, 50, 500);
    delay(700);
  } else
  if (ball(BALL5)) {
    // ヒット!
    strike = 0;                 // ストライクの数を0に戻す。
    ++level;                    // レベルを上げる。
    duration *= 0.8;            // ボールを速くする。
    tone(SPEAKER, 554, 300);
    delay(300);
    tone(SPEAKER, 440, 300);
    delay(300);
  } else {
    // 遅すぎる。
    ++strike;
    tone(SPEAKER, 50, 500);
    delay(700);
  }
  // ボタンがオフになるまで待つ。
  while (digitalRead(BUTTON) == LOW) {
  }
  Serial.println();
  digitalWrite(last, LOW);      // 最後に光らせたLEDを消す。
  pinMode(last, INPUT);
  if (strike == 3) {
    // 3ストライク、バッターアウト。
    Serial.print("Last Level: ");
    Serial.println(level);
    Serial.println("Hit the button to start over.");
    tone(SPEAKER, 50, 500);
    delay(700);
    tone(SPEAKER, 50, 500);
    // ボタンが押されてから離されるのを待つ。
    while (digitalRead(BUTTON) == HIGH) {
    }
    while (digitalRead(BUTTON) == LOW) {
    }
    duration = DURATION;
    level = strike = last = 0;
  }
}
          
            Last modified
 11 years ago          
          
            Last modified on Dec 9, 2013, 4:57:40 PM
          
        
      Attachments (2)
- baseball.zip (1.2 KB ) - added by 11 years ago.
 - 
        baseball.png
 (7.2 KB
) - added by  11 years ago.
        
野球ゲーム回路図
 
Download all attachments as: .zip
  Note:
 See   TracWiki
 for help on using the wiki.