ブログパーツUL5

VS-C1(PS2コントローラ互換)対応のモーションプログラム作成

 本格的にモーションプログラムを組む前に、VS-C1(PS2コントローラ互換)対応は初めてなので、2つだけ動作テストの確認をしておく必要がありました。
・同時に2つのキーを押して、シフトキー機能が有効に動作するか
・ジョイスティックのアナログ値を活用してサーボをコントロールできるか
この2項目が確認できれば、今までと同じようにプログラムが組めます。

(1)シフトキーの実現
 ・L1、R1、L2、R2、L3、R3、SELECTはシフトキーに設定
 ・コマンド[A]とコマンド[B]で同時に送信して、データを取得
 ・但し、シフトキーを優先するので、コマンド[B]を先に実行
(2)ジョイスティックによるアナログコントロール
 ・上記のシフトキーを押して、ジョイスティックのアナログ値を取得する
 ・10〜190と56〜120の2種類の範囲を選択して取得する
 ・X方向、Y方向が操作感覚と合うように調整する
 ・各方向と範囲別にコマンドを送信してアナログ値を取得する

 頭を回すために首のサーボをジョイスティックでコントロールできるようになったプログラムの例です。さすがに、赤外線リモコンではできない動作ですね。同じようにして上半身のサーボはすべてコントロールできるようにできますが、操作は慣れるまではかなり難しいですよ。腕が本体に引っかかるトラブルにならないように、IF文で制限しておいた方が得策でしょう。

'------ Sample(SELECT Key) ------
key70:
' Round head motion
'---- LCD Display ----
PRINT 12 'CLS
PRINT "Select (Key70)"
PRINT 13 'CR
PRINT 10 'LF
'--

PRINT "RX="
TXD ="C"
ETX 19200, TXD
GETC_4:
ERX 19200, RXD, GETC_4
PRINT FORMAT(RXD,DEC,3)
A = RXD

SERVO 10,A ; Servo of neck

WAIT
GOTO MAIN
'--------------------------

SELECTキーを押しながら操作するので、右側のジョイスティックのX方向のみを使って、アナログ値を取得します。アナログ値はMR-C3024用にした10〜190の値なので、そのままservoの変数で動かすことができます。なお、動作確認のLCD表示用のPRINT文がありますが、LCDがなくても無視されます。
0

    コメント
    コメントする








       
    この記事のトラックバックURL
    トラックバック

    カレンダ

         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    << September 2017 >>