1.タッチセンサーを使った課題
Private Sub cmdSensor_Click()
RCX.SelectPrgm (4)

    With RCX
        .BeginOfTask (0)
            .SetSensorType 0, 1
            .SetSensorMode 0, 1, 0
            
            .Loop 2, 0
                
                    If 9, 0, 2, 2, 0
                    .On "0"
                    .On "1"
                .Else
                         
                    .AlterDir "0"
                    .AlterDir "1"
                    
                    
                .EndIf
                
            .EndLoop
       .EndOfTask
    End With
               
End Sub
ソースの基本部分は教科書の通りです。
If文によりタッチセンサーの状態を確認し押さ
れている場合はアウトプットAおよびBにつなが
れているモーターをONにします。
押されていない場合にはAおよびBのモーターを
AlterDir命令により逆回転させます。
実際に動作させた結果、マシンは壁にぶつかると
ちゃんと後退しました!
2.光センサーを使った課題
Private Sub cmdSensor2_Click()
RCX.SelectPrgm (4)

With RCX

       .BeginOfTask (0)
       .SetSensorType 1,3
       .SetSensorMode 1, 4, 0
    
       .Loop 2, 0
           .If 9, 1, 1, 2, 22
               .On "0"
               .On "1"
           .Else
               .Off "0"
               .Off "1"
           .EndIf
       .EndLoop
       .EndOfTask

   End With

End Sub
1.と基本的なプログラム構造は変わりません。
SetSensorTypeおよびSetSensorModeのパラメータ
を書き換え光センサー対応にします。
さらにIf文のパラメータを書き換えます
光センサーで実際に明るさの度合いを測った
ところ黒と白を区別するにはだいたい条件値
は22ぐらい設定すればよいようでした。
Elseの部分はOFFとし黒領域ではモーター
がとまる仕組みにしました。
実際にプログラムを走らせた結果、思ったとおり
の動作をしてくれました。
3.角度センサーを使った課題
Private Sub cmdSensor3_Click()
RCX.SelectPrgm (4)

With RCX

    .BeginOfTask (0)
    .SetSensorType 1, 4
    .SetSensorMode 1, 7, 0
    
    .Loop 2, 0
        .If 9, 1, 0, 2, 720
            .Off "0"
            .Off "1"
        .Else
            .On "0"
            .On "1"
        .EndIf
    .EndLoop
    .EndOfTask
End With

End Sub

2.と同じように基本となる部分は1.と同じ。
SetSensorTypeおよびSetSensorModeのパラメータ
を書き換え今度は角度センサー対応にします。
角度センサーを実際に回転させてみたところ、
1回転あたりセンサーの測定値が15となり、
その時の入力パラメータ値はその約6.5倍で
あったので720と入力すると理論的には6回転するはず。
実際に動作させたところ6回転したので推論
は正しかったようです。
ホームへ戻る