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でそれを確認してみましょう
- ロボザックとケーブルで繋いで、マイコンのスイッチをオン。
- テンプレートが転送されてなければ、転送する。
- RZ1Basicを起動し、コントローラーのコマンドテストを選択。
- Dataの下のエディットフィールドに「FF 数値(16進数)」と入力します。
例:FF 10 (第一変数を16にする意味:RR=16)
16進数が分らない場合は、
で16進数を知ることができます。 - 「Send Data」のボタンをクリック
どうでしたか動いたでしょうか
と、実際にどんな処理が行われているか知る為に、RZ1Basicを使って説明しましたが、roboBASICと一緒に、roboRemoconというソフトウエアがインストールされたと思います。このソフトウエアがやっていることは、まさにこれに相当する訳ですね。
ということで、テンプレートのRRですが、そんな意味がありますので、変数の定義の順番を変えてしまうと変なことになってしまいますので、覚えておいて下さいね
| 固定リンク
「ROBOBASIC講座」カテゴリの記事
- IF文の中のIF文(2008.10.31)
- 制限の勧め(2008.10.09)
- ROBOBASIC講座(GYROSET, GYRODIR, GYROSENSE)(2008.09.21)
- ROBOBASIC講座(MOVEPOS、POS)(2008.08.21)
- ROBOBASIC講座(TIPS: FILL文)(2008.07.15)
この記事へのコメントは終了しました。
コメント
こんにちは。
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分