2013年3月21日木曜日

arduinoでイライラ棒

昔テレビ番組であったイライラ棒をarduinoでつくってみました。

イライラ棒とは・・・youtubeで検索

ブレッドボードに組み立てた卓上サイズです。



部品としては、
・タクトスイッチx1・コース用針金(ブレッドボードに刺さる太さ)
・プルアップ抵抗(2.2kΩ←適当)
・電極棒用針金(ちょっと太め)・ビニール線
・圧電ブザー(ケーキの箱からリサイクル)
・LED+電流制限抵抗220Ω
・ジャンプワイヤー
・ブレッドボード

スタート地点に電極棒をセット、タクトスイッチを押して計測開始。ブザーが鳴ります。
途中でコースに触れるとLEDが点灯、ブザーが鳴りゲームオーバー。
ゴールに到達したら、自分でタクトスイッチを押し、計測終了。
シリアル出力で所要時間を出力します。
7セグメントLEDやキャラクタLCDで表示してもいいんじゃないでしょうか。
計測結果の表示が要らないなら、電源供給するだけでも遊べます。

コースの曲げ方や電極棒の先のループの大きさで難易度を調節してください。


◆回路図


※GNDから伸びたフック状の物が電極棒になります

◆スケッチ
// Arduinoでイライラ棒 by cranberry
// http://cranberrytree.blogspot.jp/
//                           2013/03/21

byte led = 13;
byte sens = 8;
byte push = 7;
byte buz = 10;
unsigned long start_time;
float goal_time;
boolean game_over_state = true;

void setup() {               
  pinMode(led, OUTPUT);    
  pinMode(sens, INPUT);    
  pinMode(push, INPUT);    
  digitalWrite(push,HIGH);
  Serial.begin(9600);
}

void loop() {
  if(digitalRead(sens) == LOW && game_over_state == false){
    touched();
  }
  if(digitalRead(push) == LOW){
    butt_pressed();
  }
}

void touched(){
  digitalWrite(led, HIGH);
  Serial.println("++++++ GAME OVER ++++++");
  game_over_state = true;
  tone(buz,200,500);
}

void butt_pressed(){
  if(game_over_state == true){
    game_over_state = false;
    digitalWrite(led,LOW);
    tone(buz,1000,200);
    Serial.println("------ GAME START ------");
    start_time = millis();
  }
  else{
    game_over_state = true;
    Serial.println("****** Congratulations ******");
    Serial.print("your time is ");
    goal_time =float((millis() - start_time))/ 1000;
    Serial.println(goal_time,2);
    tone(buz,1200,400);
    delay(100);
    tone(buz,800,400);
    delay(100);
    tone(buz,1200,400);
    delay(100);
    tone(buz,800,400);
  }
  delay(500);
}


環境:arduino UNO R3、arduino 1.0.2、win7





0 件のコメント:

コメントを投稿