ブログパーツUL5

モーションプログラムの修正と作成

 VS-C1の受信モジュールをRZ-1に搭載したので、胸のフロントカバーが厚くなり、モーションプログラムの全てを点検および修正が必要となりました。VS-C1の無線コントローラ対応のモーションプログラムの作成と同時に行いました。

(1)点検および修正したモーション
●基本モーション(21関節)
●音声認識モーション(21関節)
●ラジオ体操モーション(21関節)
●自律歩行モーション(21関節)

(2)新規に作成したモーション
●無線コントローラモーション(21関節)
 (Key1〜Key80に割振る)
 [コントローラ操作]
 ・R1,L1,R2,L2,R3,L3,SELECTをシフトキーにする
 ・シフトキーを押すと左右のジョイスティックでアナログ操作を可能に
  →手、腕、肩、首、股がアナログ操作が可能
 ・前後と左右の動作は、+文字キーで基本的に操作
 ・R1,L1,R2,L2のシフトキーで各キーにモーションを割当てる
 ・SELECTシフトキーには、首の動作と長いモーションを割当てる
 ・R3,L3だけはジョイスティックのアナログ操作のみにする
 ・STARTキーは、RZ-1のリセットのみにする
 ・各Keyには、LCD表示にモーション名とアナログ値を表示

 シフトキーを設定していると、押した時点でジョイスティックの中間のアナログ値100が出力されるので、プログラムを作成するときに注意する必要がある。アナログ値で動作するように設定する場合にはIF文できちんと動作範囲を制限しておく。バイブレータはバッテリーが短くなるので、基本的に使用しない。

 MR-C3024のEEPROMに音声認識モーション(21関節)を、増設EEPROMの2個(格納の関係で2個に)はラジオ体操モーション(21関節)と無線コントローラモーション(21関節)を搭載してDIP-SWですぐに切り替えられる。  
0

    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

      腕と肩の運動モーション

       腕と肩のサーボのテスト用にちょっとおもしろモーションプログラムを作成してみました。RZ-1がこの腕と肩の運動モーションをしているのを見ながら、自分も真似てやって運動するのもいいかも知れません(脳の活性化にもなる)。難易度がレベル1からレベル3まで連続して変化します。このモーションは初心者でも簡単に作成できますので、チャレンジしてみてください。

      上半身だけの動作(下半身はポーズに事前に設定)
      レベル1:左右の腕を別々に下、横、上を繰返す。
      レベル2:左右の腕を別々に下、横、上、前を繰返す。
      レベル3:レベル2の動作に、首を左右に、手の動作を加える。

      *肩のサーボは通常位置に戻してあります。

      '=======================================================
      taisou:
      MOVE G6B, 100, 30, 85,100 , , ,
      MOVE G6C, 100, 30, 85,100 , , ,
      SPEED 10
      HIGHSPEED SETON
      '-- levei-1
      FOR i=0 TO 3
      MOVE G6B, 100, 30, 85, , , ,
      MOVE G6C, 100, 30, 85, , , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, , , ,
      MOVE G6C, 100, 30, 85, , , ,
      DELAY 500
      MOVE G6B, 100, 170, 110, , , ,
      MOVE G6C, 100, 100, 100, , , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, , , ,
      MOVE G6C, 100, 170, 110, , , ,
      DELAY 500
      MOVE G6B, 100, 30, 85, , , ,
      MOVE G6C, 100, 100, 100, , , ,
      DELAY 500
      NEXT i
      '-- level-2
      FOR i=0 TO 1
      MOVE G6B, 100, 30, 85, , , ,
      MOVE G6C, 100, 30, 85, , , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, , , ,
      MOVE G6C, 185, 30, 85, , , ,
      DELAY 500
      MOVE G6B, 100, 170, 110, , , ,
      MOVE G6C, 100, 100, 100, , , ,
      DELAY 500
      MOVE G6B, 100, 30, 85, , , ,
      MOVE G6C, 100, 170, 110, , , ,
      DELAY 500
      MOVE G6B, 100, 170, 110, , , ,
      MOVE G6C, 100, 100, 100, , , ,
      DELAY 500
      MOVE G6B, 185, 30, 85, , , ,
      MOVE G6C, 100, 100, 100, , , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, , , ,
      MOVE G6C, 100, 170, 110, , , ,
      DELAY 500
      MOVE G6B, 100, 170, 110, , , ,
      MOVE G6C, 100, 30, 85, , , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, , , ,
      MOVE G6C, 100, 170, 110, , , ,
      DELAY 500
      NEXT i
      '-- level-3
      FOR i=0 TO 1
      MOVE G6B, 100, 30, 85,115, , ,
      MOVE G6C, 100, 30, 85,115, , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, 60, , ,
      MOVE G6C, 185, 30, 85,110, , ,
      DELAY 500
      MOVE G6B, 100, 170, 110,110, 60, ,
      MOVE G6C, 100, 100, 100, 60, , ,
      DELAY 500
      MOVE G6B, 100, 30, 85,115,100, ,
      MOVE G6C, 100, 170, 110,110, , ,
      DELAY 500
      MOVE G6B, 100, 170, 110,110, , ,
      MOVE G6C, 100, 100, 100, 60, , ,
      DELAY 500
      MOVE G6B, 185, 30, 85,115, , ,
      MOVE G6C, 100, 100, 100, 60, , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, 60,140, ,
      MOVE G6C, 100, 170, 110,110, , ,
      DELAY 500
      MOVE G6B, 100, 170, 110,110,100, ,
      MOVE G6C, 100, 30, 85,115, , ,
      DELAY 500
      MOVE G6B, 100, 100, 100, 60, , ,
      MOVE G6C, 100, 170, 110,110, , ,
      DELAY 500
      NEXT i
      HIGHSPEED SETOFF
      MOVE G6B, 100, 30, 85,100 , , ,
      MOVE G6C, 100, 30, 85,100 , , ,
      RETURN
      '=======================================================
      0

        がんばろ日本! がんばろ東北!

         RZ-1(ROBOZAK)からも復興に向けて応援します。

        がんばろ日本!
        がんばろ日本
        がんばろ日本
        がんばろ東北
        がんばろ東北
        がんばろ東北
         RZ-1の胸の液晶表示にスローガンを表示するようにしました。1秒毎に表示が切り替わります。

        【追記】
         初めて液晶表示器にカタカナを表示してみました。roboBASICのエディタでは、半角カタカナの表示は文字化けしてしまうので、他のエディタで編集してからコピー&ペーストすれば文字化けしても液晶にはカタカナが表示されました。ASCIIコードを入れるよりも簡単なので今後はこの方法でモーションを編集できます。
        0

          交通整理のモーション

           停電などで信号機が消えた時にお巡りさんが交差点の真ん中で交通整理をしていますが、交通量が多くて危なそうですね。そこで、ロボットが交通整理できないか考えていて、RZ-1に交通整理させるモーションを作成してみました。進行方向を誘導してから右折を誘導して、注意信号になってから方向転換します。これを1サイクルで繰返しています。

           どうも笛の音がうまく再現できておらず、ピッピッピーと鳴らしながら方向転換したいのですが、CPUが一つしかなので無理で、音階もおかしいかも知れません。なお、ハンドは動作せていませんが、首のサーボは動作させていますので、各自で改良してみてください。

           でも計画停電は終了したようので一安心ですね。

          '=======================================
          koutuuseiri:

          SPEED 5
          MOVE G24,100,76,145,93,100,,100,100,100,115,100,,100,100,100,115,,,100,76,145,93,100,
          DELAY 500

          jump_o:

          FOR i=0 TO 4
          MOVE G6B,100,100,180,110,80
          DELAY 500
          MOVE G6B,100,100,110,110,
          DELAY 500
          MOVE G6B,100,100,180,110,120
          DELAY 500
          MOVE G6B,100,100,110,110,
          DELAY 500
          NEXT i

          MOVE G6B,100,100,110,110, 80
          DELAY 750

          SPEED 3
          MOVE G6B,100,100,185,110,120
          DELAY 500
          MOVE G6C,150, 30, 50,110,
          DELAY 500
          MOVE G6C,100,100,110,110,
          DELAY 500
          MOVE G6C,150, 30, 50,110,
          DELAY 500
          MOVE G6C,100,100,110,110,
          DELAY 500

          TEMPO 150
          MUSIC "6B5B"

          MOVE G24,100,76,145,93,100,,100,180,100,115,100,,100,180,100,115,,,100,76,145,93,100,
          WAIT

          TEMPO 150
          MUSIC "2B"

          SPEED 5
          MOVE G6A, 94, 53, 145, 116, 107, 96
          MOVE G6D, 94, 105, 145, 66, 107, 100
          WAIT
          MOVE G24,100,76,145,93,100,,100,180,100,115,100,,100,180,100,115,,,100,76,145,93,100,
          MOVE G6A, 94, 53, 145, 116, 107, 96
          MOVE G6D, 94, 105, 145, 66, 107, 100
          WAIT
          MOVE G24,100,76,145,93,100,,100,100,100,115,100,,100,100,100,115,,,100,76,145,93,100,
          DELAY 1000

          FOR i=0 TO 4
          MOVE G6B,100,100,180,110,80
          DELAY 500
          MOVE G6B,100,100,110,110,
          DELAY 500
          MOVE G6B,100,100,180,110,120
          DELAY 500
          MOVE G6B,100,100,110,110,
          DELAY 500
          NEXT i

          MOVE G6B,100,100,110,110, 80
          DELAY 750

          SPEED 3
          MOVE G6B,100,100,185,110,120
          DELAY 500
          MOVE G6C,150, 30, 50,110,
          DELAY 500
          MOVE G6C,100,100,110,110,
          DELAY 500
          MOVE G6C,150, 30, 50,110,
          DELAY 500
          MOVE G6C,100,100,110,110,
          DELAY 500

          TEMPO 170
          MUSIC "6B5B"

          MOVE G24,100,76,145,93,100,,100,180,100,115,100,,100,180,100,115,,,100,76,145,93,100,
          WAIT

          TEMPO 150
          MUSIC "2B"

          SPEED 5
          MOVE G6D, 94, 53, 145, 116, 107, 96
          MOVE G6A, 94, 105, 145, 66, 107, 100
          WAIT
          MOVE G24,100,76,145,93,100,,100,180,100,115,100,,100,180,100,115,,,100,76,145,93,100,
          MOVE G6D, 94, 53, 145, 116, 107, 96
          MOVE G6A, 94, 105, 145, 66, 107, 100
          WAIT
          MOVE G24,100,76,145,93,100,,100,100,100,115,100,,100,100,100,115,,,100,76,145,93,100,
          DELAY 1000

          GOTO jump_o

          RETURN
          '=======================================
          0

            ハイキックのモーション

             RZ-1の上半身が少し軽くなったので、動きもバランスよく出来るようになってきました。foot_upのモーションからハイキックを繰り出すというバランス感覚を必要とするモーションを作成してみました。キックの時の衝撃で倒れないように腕で支えているので、腕の長さによって調整する必要があります。また、上半身が重いと意外と元のfoot_upポーズに戻れないかもしれません。あくまで参考です。
            ハイキック1ハイキック2
            【注意】動作保証や故障の責任は当方では負えないので、ご利用は自己責任でお願いします。

            以下に、モーションプログラムを載せます。
            '======================================================
            SPEED 4
            MOVE G24,112,75,145,93,92,140,100, 40, 80,100,140,,100,40, 80,100,,, 85,71,152, 91,112,140
            SPEED 6
            MOVE G24,114,75,145,96,93,140,100,105,100,100,100,,100,95,100,100,,, 90,98,105,115,115,140
            MOVE G24,115,75,145,96,93,140,100,105,100,100, ,,100,95,100,100,,,100,151,23,140,115,100
            WAIT
            SPEED 4
            MOVE G6A,114, 127, 79, 106, 158, 140
            MOVE G6B,100, 93, 81, 100, 80,
            MOVE G6C,100, 68, 54, 100, ,
            MOVE G6D,100, 151, 23, 140, 130, 100
            WAIT
            DELAY 500

            SPEED 15
            HIGHSPEED SETON
            MOVE G6D,100, 54, 153, 100, 130, 100
            HIGHSPEED SETOFF

            SPEED 10
            MOVE G6A,114, 127, 79, 106, 158, 140
            MOVE G6B,100, 93, 81, , ,
            MOVE G6C,100, 68, 54, , ,
            MOVE G6D,100, 151, 23, 140, 130, 100
            WAIT
            DELAY 500

            SPEED 15
            HIGHSPEED SETON
            MOVE G6D,100, 54, 153, 100, 130, 100
            HIGHSPEED SETOFF

            SPEED 10
            MOVE G6A,114, 127, 79, 106, 158, 140
            MOVE G6B,100, 93, 81, , ,
            MOVE G6C,100, 68, 54, , ,
            MOVE G6D,100, 151, 23, 140, 130, 100
            WAIT
            DELAY 500

            SPEED 5
            MOVE G6A,112, 127, 75, 113, 140, 140
            MOVE G6B,100, 93, 81, , ,
            MOVE G6C,100, 68, 54, , ,
            MOVE G6D,100, 122, 74, 120, 130, 100
            WAIT

            MOVE G24,115,75,145,96,93,140,100,105,100,100,,,100,95,100,100,,,100,151,23,140,115,100
            WAIT
            MOVE G24,114,76,145,96,93,140,100,105,100,100,,,100,95,100,100,,, 90,98,105,115,115,140
            MOVE G24,112,76,145,93,92,140,100, 40, 80,100,,,100,40, 80,100,,, 85,71,152, 91,112,140
            WAIT

            GOSUB standard_pose
            DELAY 1000
            '======================================================
            '======================================================
            SPEED 4
            MOVE G24, 85,71,152, 91,112,140,100, 40, 80,100, 60,,100,40, 80,100,,,112,75,145,93,92,140
            SPEED 6
            MOVE G24, 90,98,105,115,115,140,100,105,100,100,100,,100,95,100,100,,,114,75,145,96,93,140
            MOVE G24,100,151,23,140,115,100,100,105,100,100, ,,100,95,100,100,,,115,75,145,96,93,140
            WAIT
            SPEED 4
            MOVE G6A,100, 151, 23, 140, 130, 100
            MOVE G6B,100, 68, 54, 100, 120,
            MOVE G6C,100, 93, 81, 100, ,
            MOVE G6D,114, 127, 79, 106, 158, 140
            WAIT
            DELAY 500

            SPEED 15
            HIGHSPEED SETON
            MOVE G6A,100, 54, 153, 100, 130, 100
            HIGHSPEED SETOFF

            SPEED 10
            MOVE G6A,100, 151, 23, 140, 130, 100
            MOVE G6B,100, 68, 54, , ,
            MOVE G6C,100, 93, 81, , ,
            MOVE G6D,114, 127, 79, 106, 158, 140
            WAIT
            DELAY 500

            SPEED 15
            HIGHSPEED SETON
            MOVE G6A,100, 54, 153, 100, 130, 100
            HIGHSPEED SETOFF

            SPEED 10
            MOVE G6A,100, 151, 23, 140, 130, 100
            MOVE G6B,100, 68, 54, , ,
            MOVE G6C,100, 93, 81, , ,
            MOVE G6D,114, 127, 79, 106, 158, 140
            WAIT
            DELAY 500

            SPEED 5
            MOVE G6A,100, 122, 74, 120, 130, 100
            MOVE G6B,100, 68, 54, , ,
            MOVE G6C,100, 93, 81, , ,
            MOVE G6D,112, 127, 75, 113, 140, 140
            WAIT
            MOVE G24,100,151,23,140,115,100,100,105,100,100,,,100,95,100,100,,,115,75,145,96,93,140
            WAIT
            MOVE G24, 90,98,105,115,115,140,100,105,100,100,,,100,95,100,100,,,114,75,145,96,93,140
            MOVE G24, 85,71,152, 91,112,140,100,105,100,100,,,100,95,100,100,,,112,75,145,93,95,140
            WAIT

            GOSUB standard_pose
            RETURN
            '======================================================
            0

              RZ-1の横移動モーションの改良

               ROBOZAKで提供されていた横移動のモーションはどうも不安定なので、静かでスムーズな横移動(シフト)モーションに改良しました。

              '================================================
              k13: '>1
              'Right_shift
              SPEED 4
              MOVE G24,112,76,145,93,92,100,100,40,80,100,100,100,100,40,80,100,100,100,85,71,152,91,112,100

              SPEED 5 '5->8 Speedup可能
              MOVE G24,110,92,124,97,93,130,100,35,90,100,100,100,100,35,90,100,100,100,76,72,160,82,128,130
              MOVE G24,93,76,145,94,109,100,100,35,90,100,100,100,100,35,90,100,100,100,93,76,145,94,109,100
              MOVE G24,76,72,160,82,128,130,100,35,90,100,100,100,100,35,90,100,100,100,110,92,124,97,93,130

              SPEED 8 '8->10 Speedup可能
              MOVE G24,86,83,135,97,114,140,90,40,80,100,100,100,100,40,80,100,100,100,113,78,145,93,93,140
              MOVE G24,85,71,152,91,112,140,100,40,80,100,100,100,100,40,80,100,100,100,112,76,145,93,92,140

              SPEED 6
              GOSUB standard_pose
              RETURN
              '================================================
              '================================================
              k14: ' < 1
              'Left_shift
              SPEED 4
              MOVE G24,85,71,152,91,112,100,100,40,80,100,100,100,100,40,80,100,100,100,112,76,145,93,92,100

              SPEED 5 '5->8 Speedup可能
              MOVE G24,76,72,160,82,128,130,100,35,90,100,100,100,100,35,90,100,100,100,110,92,124,97,93,130
              MOVE G24,93,76,145,94,109,100,100,35,90,100,100,100,100,35,90,100,100,100,93,76,145,94,109,100
              MOVE G24,110,92,124,97,93,130,100,35,90,100,100,100,100,35,90,100,100,100,76,72,160,82,128,130

              SPEED 8 '8->10 Speedup可能
              MOVE G24,113,78,145,93,93,140,100,40,80,100,100,100,90,40,80,100,100,100,86,83,135,97,114,140
              MOVE G24,112,76,145,93,92,140,100,40,80,100,100,100,100,40,80,100,100,100,85,71,152,91,112,140

              SPEED 6
              GOSUB standard_pose
              RETURN
              '================================================

              【2011/2/13追記】
               動作を少し速くすることは可能ですが、バッテリの消費のことを考えてエコ動作にしています。本当はモーションを作成している時はACアダプタを使用しているので、SPEED 12以上にすると電流制限に引っかかりモーションが正確にできないためです。でも、RZ-1にとってもエコ動作の方がバッテリーの動作時間を伸ばせますから、通常動作ではSPEED 10ぐらいにしておいた方がいいのでしょう。
              0

                突きのモーション

                 この頃は寒い日が続くので、手軽に作れそうな気合いを入れる突きモーションを作りました。2足ロボットは横方向には強いので横の突きは誰でも簡単にモーションを作ることが出来ます。ただ、突きだけでは面白くないので、突きワザの後に軽く「押忍」の挨拶を付け加える。
                右突き左突き

                作成したモーション
                '================================================
                TSUKI_R:

                SPEED 15

                HIGHSPEED SETON
                MOVE G6A, 69, 129, 72, 106, 149,
                MOVE G6D, 113, 160, 23, 127, 84,
                MOVE G6B, 99, 76, 53, 142, 100,
                MOVE G6C, 97, 99, 99, 130,
                HIGHSPEED SETOFF

                DELAY 2000

                SPEED 5

                GOSUB standard_pose

                DELAY 500

                MOVE G6A, 100, 76, 145, 98, 100,
                MOVE G6D, 100, 76, 145, 98, 100,
                MOVE G6B, 85, 30, 80, 130, 100,
                MOVE G6C, 85, 30, 80, 130, ,
                WAIT

                DELAY 1000

                RETURN
                '================================================
                '================================================
                TSUKI_L:

                SPEED 15

                HIGHSPEED SETON
                MOVE G6D, 69, 129, 72, 106, 149,
                MOVE G6A, 113, 160, 23, 127, 84,
                MOVE G6C, 99, 76, 53, 142, 100,
                MOVE G6B, 97, 99, 99, 130,
                HIGHSPEED SETOFF

                DELAY 2000

                SPEED 5

                GOSUB standard_pose

                DELAY 500

                MOVE G6A, 100, 76, 145, 98, 100,
                MOVE G6D, 100, 76, 145, 98, 100,
                MOVE G6B, 85, 30, 80, 130, 100,
                MOVE G6C, 85, 30, 80, 130, ,
                WAIT

                DELAY 1000

                RETURN
                '================================================

                サブルーチンのstandard_poseは、普通の立ちポーズです。私のモーションはLCD表示や距離測定しており複雑なので省略しました。自分の立ちポーズのサブルーチンを指定してください。
                0

                  光センサのデジタル入力の動作確認

                   私のRZ-1では全てのポートのうち空いているポートは3つしかありません。ポート11,16,,17の3つです。ここで、ROBOZAKから提供されている光センサーが余っていて、何も使っていません。
                   そこで、光センサーの出力特性を調べてみた所、次のような出力電位でした。
                  ・明るい所では「0}で、電位は0.5V前後
                  ・暗い所では「1」で、電位はVcc-0.8V
                  でした。

                   次に、上記の3つのポートに光センサを接続して、この電圧で検出できるか確認してみましたが、ちょっとわからない現象が発生しました。
                  ・1つのポートは「0」で変化せず
                  ・2つのポートは明るいと「0」、暗いと「1」と変化して検出できる
                  なぜか1つのポートだけが変化しないかは不明です。マイコンかMR-C3024の癖なのでしょうか? 特性表がないのでわかりません。

                   チェック用に作成したプログラムで、コマンドIN()でデジタルポートの入力値を読み込みます。一応、3つのポートはモーターオフに設定しておきました。なお、光センサは同じものを各ポートに接続して、変化を調べましたので、センサーの違いはないようにしました。LCDは本体のLCD端子に接続して表示させています。

                   参考に、作成したチェックプログラムです。

                  '***********************************
                  ' I/O PORT CHECK (ON-LCD Display)
                  '***********************************
                  DIM A AS BYTE
                  DIM B AS BYTE
                  DIM C AS BYTE
                  '-- motor off setting --
                  MOTOROFF 11
                  MOTOROFF 16
                  MOTOROFF 17
                  '-------------------------
                  main:
                  PRINT 12 'CLS
                  A=IN(16) 'change 0 -> 1
                  PRINT "P16="
                  PRINT FORMAT(A,DEC,3)
                  B=IN(17) 'change 0 -> 1
                  PRINT " P17="
                  PRINT FORMAT(B,DEC,3)
                  PRINT 13 'CR
                  C=IN(11) 'change 0 -> 1
                  PRINT "P11="
                  PRINT FORMAT(C,DEC,3)
                  DELAY 1000
                  PRINT " -> NEXT"
                  PRINT 13 'CR
                  DELAY 1000
                  GOTO main
                  '================================

                   ただ、この光センサをうまく使えるモーションがありませんね。以前、本体に付けた光センサを遮るとパワーオフするようにしたぐらいです。予告にもあったように足の裏の光センサは階段に上る時に使うのかと思っていましたが、それはなかったので自分で考えろということのようです。。。。?(意味ないじゃん〜)
                  0

                    RZ-1自身でI2Cのテスト(?)

                     私のRZ-1は本体の胸にLCD表示器を搭載しているので、I2Cテストプログラムで表示することができるのです。

                     ROBONOVAのマニュアルにあったサンプルプログラムを参考にして作ってあったI2Cの内容を表示するサンプルプログラムを以下に記載しました。


                    '================================
                    ' I2C Sample Program
                    '================================

                    DIM RR AS BYTE
                    DIM A AS BYTE
                    DIM i AS BYTE
                    DIM code AS BYTE

                    CONST scl = 22
                    CONST sda = 23

                    '---------------------------
                    A = IN(sda)
                    s1:
                    OUT scl,1
                    OUT sda,0
                    s3:
                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT sda,1
                    OUT scl,0
                    OUT scl,1

                    OUT scl,0
                    OUT scl,1

                    A = IN(sda)
                    PRINT "ACK="
                    PRINT FORMAT(A,DEC,3)
                    DELAY 1000

                    code=0
                    PRINT 12 'CLS:LCD_clear

                    FOR i=0 TO 7
                    OUT scl,0
                    OUT scl,1
                    A=IN(sda)
                    A=A< code =code OR A
                    PRINT FORMAT(code,DEC,3)
                    PRINT " "
                    DELAY 500

                    NEXT i

                    DELAY 1000
                    PRINT 12 'CLS:LCD_clear
                    PRINT "ROMPEEK DATA"
                    DELAY 1000

                    PRINT 12 'CLS:LCD_clear

                    FOR i=0 TO 255

                    PRINT " "
                    A= ROMPEEK(i)
                    PRINT FORMAT(A,HEX,2)
                    PRINT " "
                    DELAY 100

                    NEXT i

                    END

                    '======-=== Program End ==========
                    0


                      カレンダ

                           12
                      3456789
                      10111213141516
                      17181920212223
                      24252627282930
                      31      
                      << March 2024 >>