スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


にほんブログ村 その他趣味ブログ LEGO・ブロックへ

いないいないばあロボ - プログラミング編(2/2)

最終的なRobotCのプログラムは以下のようになりました。
#include "JoystickDriver.c"

task main(){
  nSyncedMotors = synchBC;

  while(true){
    getJoystickSettings(joystick);
    if(joystick.joy1_y1 > 10){
      nSyncedTurnRatio = +100;
      motor[motorB] = 50;
    }else if(joystick.joy1_y1 < -10){
      nSyncedTurnRatio = +100;
      motor[motorB] = -50;
    }else{
      if(joystick.joy1_x1 > 10){
	      nSyncedTurnRatio = -100;
	      motor[motorB] = -50;
      }else if(joystick.joy1_x1 < -10){
	      nSyncedTurnRatio = -100;
	      motor[motorB] = 50;
      }else{
	      nSyncedTurnRatio = +100;
	      motor[motorB] = 0;
	    }
    }

    if(joy1Btn(1) == 1){
      nMotorEncoderTarget[motorA] = 5;
      motor[motorA] = 50;
    }else if(joy1Btn(2) == 1){
      nMotorEncoderTarget[motorA] = 5;
      motor[motorA] = -50;
    }else if(joy1Btn(3) == 1){
      PlaySoundFile("Laughing 02.rso");
      wait1Msec(1000);
    }else if(joy1Btn(4) == 1){
      PlaySoundFile("Hello.rso");
      wait1Msec(1000);
    }else if(joy1Btn(5) == 1){
      PlaySoundFile("Goodbye.rso");
      wait1Msec(1000);
    }
  }
}
joystickの上で前方向、下で後方向、右で右回転、左で左回転、AボタンBボタンで首の上下、C以降のボタンで音を鳴らすようにしています。音声のファイルはこのソースファイルと同じフォルダに置いておくと自動で転送されます。

motorAが首の部分に対応します。28行目、31行目の「5」という数字に意味はなく、少しだけ動けば何でもOKです。この部分が醜いので、角度を決めて動かしたかったのですがうまくいきませんでした。ちなみに、RobotCのHelpでは以下のようにmotorを動かすことが推奨されているようです。
nMotorEncoder[motorB] = 0;                // Reset the Motor Encoder of Motor B.
nMotorEncoderTarget[motorB] = 360;        // Set the  target for Motor Encoder of Motor B to 360.
motor[motorB] = 75;                       // Motor B is run at a power level of 75.

while(nMotorRunState[motorB] != runStateIdle)  // While Motor B is still running (hasn't reached target yet):
{
  // Do not continue.
}
motor[motorB] = 0;                       // Motor B is stopped at a power level of 0.
これに従って、首の部分をAボタンBボタンでmotorAを30度回転、(ギアの比率から)首を6度回転するようにしたかったのですが、これでcompileしてAボタンBボタンを連打しているとフリーズ状態になります。ここで書かれているようなことが影響しているのかと思いましたが、分かりませんでした。joystickの無限ループとの組み合わせがまずいのかもしれません。

次回は公開されているルービックキューブを解くロボを自分でも組み立てて動かしてみたことについて書く予定です。

にほんブログ村 その他趣味ブログ LEGO・ブロックへ
スポンサーサイト
リンク
フリーエリア
プロフィール

tsukuba.lego

Author:tsukuba.lego
●主な登場人物
koba : 会長. RCX, WeDo, NXT1.0, NXT2.0を持つ.
matk : 副会長. 2010年夏にNXT2.0を購入, 20年来のレゴ熱復活.
●会員募集中です!小学生から歓迎. 近日月1ぐらいで集まる予定.
mail:tsukuba.lego@gmail.com
YouTube (tsukubalego)
Twitter(tsukubalego)

カテゴリ
最新記事
最新コメント
月別アーカイブ
検索フォーム
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
最新トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。