« 通信ができないエラーの場合 | トップページ | RZ1Disguise v0.1.1 公開 »

ROBOBASIC講座(第一変数の利用法)

お受験が終わったら、ロボザック作ろうと楽しみにしていたけど、受験勉強中、息子には内緒でこっそりやっていたゼルダ(DS)とドラクエ(DS)をあげたのが失敗やつはロボットには見向きもせず、ゲームにハマってます。「明日こそ作ろう!」と約束を取り付けました

ということで、今日はブログ書きます

今回は、コマンドの話ではありません。
第一変数、つまり、プログラムの中で一番最初に定義されている変数についてです。

前回紹介したリモコン用のテンプレートプログラムの場合

DIM RR AS BYTE
DIM A AS BYTE
DIM A16 AS BYTE
DIM A26 AS BYTE

となっていますから、RRが第一変数ということになります。

最初に出てくるのが、

'== Action command check (50 - 82)
IF RR > 50 AND RR < 83 THEN GOTO action_proc

ですが、これに関しては利用法わかりませ〜んご存知の方、教えて下さい
ここのRRの使い方はわからないのですが、MAINループの中で、

IF RR = 0 THEN GOTO MAIN1
ON RR GOTO MAIN,K1,K2,K3,K4,K5,K6,....

となっている部分についての使い方を紹介したいと思います。
この部分、RR=0なら、MAIN1のループへジャンプするので、リモコンの受信をキャッチして動くことがわかりますが、もしRRが0でなかったら、RRの値に従って動くということになりますよね。でも、RRの数値はどうやったら設定できるのでしょうか

メモリーの操作は、通信で行うことができます。これは第一変数に限ったことではなくできるのですが、第一変数に限って、特別に通信コマンドがあるんです。ここのON RR GOTOはリモコンを使ってロボットを動かすのではなく、パソコンを使って通信でロボットを動かすためのものなのです。

現バージョンでは、特別なインターフェイスを作ってませんが、RZ1Basicでそれを確認してみましょう

  1. ロボザックとケーブルで繋いで、マイコンのスイッチをオン。
  2. テンプレートが転送されてなければ、転送する。
  3. RZ1Basicを起動し、コントローラーのコマンドテストを選択。
    Rz1basicscreensnapz009_2

     
  4. Dataの下のエディットフィールドに「FF 数値(16進数)」と入力します。
    例:FF 10 (第一変数を16にする意味:RR=16)
    Rz1basicscreensnapz010
    16進数が分らない場合は、
    Rz1basicscreensnapz011
    で16進数を知ることができます。

  5. 「Send Data」のボタンをクリック

どうでしたか動いたでしょうか

Parallels_desktopscreensnapz032 と、実際にどんな処理が行われているか知る為に、RZ1Basicを使って説明しましたが、roboBASICと一緒に、roboRemoconというソフトウエアがインストールされたと思います。このソフトウエアがやっていることは、まさにこれに相当する訳ですね。

ということで、テンプレートのRRですが、そんな意味がありますので、変数の定義の順番を変えてしまうと変なことになってしまいますので、覚えておいて下さいね

|

« 通信ができないエラーの場合 | トップページ | RZ1Disguise v0.1.1 公開 »

ROBOBASIC講座」カテゴリの記事

コメント

こんにちは。

miconoさんが書かれている通り、RRは有線で使うROBOREMOCON用ですよね。(頭文字をとってRRみたいです。)

テンプレートによっては
' RR : internal parameter variable / ROBOREMOCON / Action command
・・・と書かれているものがあります。
値もROBOREMOCONによって自動設定のようです。

IF RR > 50 AND RR < 83 THEN は、赤外線リモコンが、32単位で ID=0:0〜,1:32〜,2:64〜,3:96〜に割り当てられているので、どれともかぶらないように 50シフトしたんだと思いますが、かなりわかりにくい仕様ですね。

REMOCONはByte型なので未使用のID=4〜7のどれかに割り当ててもらった方がすっきりしたんではないかと思います。

投稿: avalon | 2008年2月11日 (月) 09時30分

avalonさん、いつもありがとうございます。

50シフトしているのは分るのですが、起動時にRRに値を入れておく方法がわからないんです。

もしかして、スタート時、変数は0にリセットされることないのかな?そうすると、スタート前に第一変数に値を送っておいて、その後、スタートするという方法が使えるのかな??また検証してみます。

投稿: micono | 2008年2月11日 (月) 09時44分

たびたびどうもです。
ROBOREMOCONが動的に書き換えるんではないかと。

投稿: avalon | 2008年2月11日 (月) 10時42分

RRの変化について動画を撮りましたのでよろしければご参照下さい。

投稿: avalon | 2008年2月11日 (月) 11時23分

ありがとうございます。

このムービーは、このブログで検証していることと同じことをしているのではないのでしょうか?

action_procを通っている訳ではないですよね?

投稿: micono | 2008年2月11日 (月) 11時35分

これは、RRの値をダンプしているだけです。

GOTO AUTO
FILL 255,10000

DIM RR AS BYTE

LCDINIT
CONT 5
CLS

MAIN:
PRINT FORMAT(RR,DEC,3)
PRINT " "
DELAY 1000

GOTO MAIN


50以上のRR値は、action命令のパラメータのようです。中間コードが+50されていると思いますが、action命令を実行するとこの値が設定されます。 action_procというラベルも実はそれを意味しているように思います。

投稿: avalon | 2008年2月11日 (月) 12時51分

avalonさん、ありがとうございました。
そう言えばactionという命令がありましたね。

goto autoで第一変数は0になっているはずなので、どうやってここで0以外の数値が入るのか、調べてみます

投稿: micono | 2008年2月11日 (月) 19時09分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ROBOBASIC講座(第一変数の利用法):

« 通信ができないエラーの場合 | トップページ | RZ1Disguise v0.1.1 公開 »