2011年9月14日水曜日

サーボモータ連動LTタイマーの試作

みなさんは、MicroBridgeのトップページにあるムービーのサンプルプログラムを動かしてみた事がありますでしょうか?
このプログラムを元にLT(Lightning Talk)で使えるサーボモータでドラを鳴らすドロイド君のロボット(仮称:ドラドロイド)を作ってみたいと思います。
画面下・手前のサーボモータにドロイド人形を取り付ける予定!
このサンプルは以下の2つのプログラムです。2つのプログラムが「2つのサーボモータへの出力」と「1つの可変抵抗の入力」のデータをやりとりしています。
  • ServoControlというAndroidプロジェクト
  • DemoというArduinoスケッチ
Android側のServoControlプロジェクトを書き換えたら、「セットしたタイマー時間に合わせてサーボを動かす」というシステムが作れます。
勉強会で行われるLT(Lightning Talk)などで5分間タイマーを使いますが、それにサーボモータでドラを鳴らすギミックを追加したら「便利でかつウケそう!」と思い、その原型を作ってみました。

試作したAndroidプロジェクト&Arduinoスケッチを以下のURLに置きました。
興味のある方は以下のzipファイルをダウンロードして動かしてみてください。
Androidアプリの画面は以下のようになります。IS/01を使いました!
5分間タイマーですがサンプルのzipファイルではテストしやすいように25秒にしています
zipファイルの「Android Project」フォルダにあるServoControlLtTimerプロジェクトは、以下のサイトのサンプルを元にしました。
"Chronometerクラスを使って簡単にタイマー処理を行う « Tech Booster": http://bit.ly/pBVKg1
ChronometerクラスのsetOnChronometerTickListenerリスナーを使ってストップウォッチがカウントするたびにタイマー時間をチェックしています。
	public void onChronometerTick(Chronometer arg0) {
	
		//EditTextからの入力フィールドのString取り出し
		SpannableStringBuilder sb = (SpannableStringBuilder)editText1.getText();
		String strEditText1 = sb.toString();

		//chronometerの時計のString取り出し
		String strMChronometer = (String) mChronometer.getText();
        
		//EditTextとChronometerの文字列が一致していたらタイムアップ!		
		if(strEditText1.equals(strMChronometer)){
			try{
				//2つのサーボモータに180度回転するようデータを出力
				int x=180;
				int y=180;
				server.send(new byte[] { (byte)x, (byte)y });
			} catch (IOException e){
				Log.e("microbridge", "problem sending TCP message", e);
			}	
		}
	}
ChronometerインスタンスmChronometerのストップウォッチ文字列"05:00"とEditTextインスタンスeditText1の文字列"05:00"が一致すればサーボモータを動かすという処理にしてみました。
あまりいいコードではないよーな…(-_-;;
昨日30分くらいでばばばっと書き加えて、動かしてみたものです。

このサンプルを元に、アイデアを出してAndroid側アプリを楽しいLTタイマーにしていきたいと思います。
アイデア&実装についてみなさんのお知恵をお貸しください!!

0 件のコメント:

コメントを投稿