1−1.タッチセンサを使った課題


  • 実験内容

    フォームに取り付けたボタン”Touch Sensor”を押してプログラムをダウンロードして実行すると、
    車に取り付けたタッチセンサが障害物に衝突したら、車がバックするようにする。


  • 実験方法

    フォームに新しいボタンを貼り付けて、
    Captionを”Touch Sensor”、名前をcmdTouchSensorと付ける。
    そして、以下のコードを書く。


  • プログラム

    Private Sub cmdTouchSensor_Click()  ' ボタンが押されたらこのVB
                       ' のサブルーチンが実行される
     RCX.SelectPrgm (4)

     With RCX
      .BeginOfTask (0)      ' Task0の定義
       .SetSensorType 0, 1    ' タッチセンサをポート0と定義する
       .SetSensorMode 0, 1, 0  ' タッチセンサの値をTRUE/FALSEに定義する

       .Loop 2, 0        ' 無限ループを作る
        .If 9, 0, 2, 2, 0    ' タッチセンサの状態を確認する
         .On "02"       ' タッチセンサが押されていなければ、モーターをOn
        .Else
         .AlterDir "02"    ' 押されていれば、今の回転方向を逆にする
        .EndIf         ' If文の終わり
       .EndLoop         ' ループの終わり
      .EndOfTask         ' Task0の定義の終わり
     End With
    End Sub



  • 実験結果

    フォームに取り付けたボタン”Touch Sensor”を押すと、プログラムがRCXにダウンロードされる。
    RCXの入力ポート1に角度センサを、出力ポートAとCにモーターをそれぞれ取り付ける。
    RCXのViewボタンを押して、RCXのディスプレイ上のポインタが入力ポート1を指すようにする。
    RCXのプログラムを実行すると車が前進し、車に取り付けたタッチセンサが障害物に衝突したら、車がバックする。


  • If文の考察

    If 9, 0, 2, 2, 0  ⇒  IF センサー0の値 = 定数 0

    TRUE/FALSE定義したタッチセンサが押されていないとき、数値0を返すので、
    タッチセンサーの値が0ならモーターをOn、それ以外ならモーターの回転方向を逆にするようにした。