タッチ センサーを使用する

タッチ センサーは、センサーの正面のボタンが押されたかどうかを検知します。例えば、タッチ センサーを使ってロボットが移動しながら何かに当たる時点を検知することができます。また、タッチ センサーを指で押して、動作を起こすことができます。
タッチ センサーは、押されたか、押されていないかを示すことができます。ボタンが、どれだけの時間またはどれだけ強く押されたかは測定することができません。タッチ センサーはロジック データを提供します(真または偽)。タッチ センサー ボタンの位置は「状態」と呼ばれ、押された場合に真となり、押されていない場合(離れた状態)に偽となります。

また、タッチ センサーはボタンが押されたかどうか、そして前に離れていたかどうかを追跡することができます。これはバンプと呼ばれ、例えば指押しを検知するのに役に立ちます。詳細については、バンプを理解するをご確認ください。
タッチ センサーのデータ
タッチ センサーは以下のデータを提供することができます:
データタイプ備考
状態 ロジックボタンが押された場合には真となり、そうでない場合には偽となります。
押された ロジック押された場合には真となり、そうでない場合には偽となります(「状態」と同じ)。
離れた ロジック押された場合には偽となり、そうでない場合には真となります(「状態」の反対)。
バンプ ロジックボタンが押されてから離れた場合に真となります。次のバンプ発生には、新たに押されて離れることが必要となります。
「押されたを使用する」の例
タッチ センサーの押されたの使い方の例の一部が以下に示されています。
例 1:タッチ センサーが押されるまで駆動
このプログラムは、タッチ センサーが押されるまでロボットを前方に動かし、それが済むとロボットは停止します。「タッチ センサー - 比較 - タッチ」モードで待機ブロックを使って、押されたかどうかをテストします。
ヒントと豆知識
センサー待機中に移動させたい時、必ずステアリング ブロックのオン モードを使うようにしてください。
例 2:タッチ センサーが押されていれば必ずモーターを動かす(方法1)
このプログラムは、タッチ センサーが押されたままであればモーターを駆動させます。モーターは、タッチ センサーが離れれば停止します。「タッチ センサー - 比較 - タッチ」モードでスイッチ ブロックを使って、押されたかどうかをテストします。テストの結果は、モーターのオンとオフを選択するのに利用されます。テストは、ループで継続的に繰り返されます。
例 3:タッチ センサーが押されていればインテリジェント ブロック ステータス ライトをパルスさせる
このプログラムは、インテリジェント ブロック ステータス ライトをオレンジ色でオンにし、タッチ センサーが押されていればパルスさせます。測定モードのタッチ センサー ブロックを使って、タッチ センサーの状態を取得します。結果は、ロジック データ ワイヤーによりインテリジェント ブロック ボタンのパルス入力へワイヤー接続されます。
「離れたを使用する」の例
タッチ センサーの離れたの使い方の例の一部が以下に示されています。
例 4:タッチ センサーが押されればビープ音を鳴らす
このプログラムは、タッチ センサーが押される度に短いトーン周波数を鳴らします。それぞれ押すごとに一つのトーン周波数だけを鳴らします。このプログラムは、「タッチ センサー - 比較 - タッチ」モードの待機ブロックを使って押されたかどうかをテストし、別の待機ブロックを使ってループ続行前に離れたかどうかをテストします。
ヒントと豆知識
このプログラムから「離れるまで待機」を削除する場合、タッチ センサーが固定されたのと同じ長さだけトーン周波数が繰り返されることを確認することになります。これは、「押されるまで待機」は、タッチ センサーがすでに押されている場合に直ちに次のブロックを続行するためです。やってみよう!
例 5:タッチ センサーが押されていれば必ずモーターを動かす(方法 2)
このプログラムは、タッチ センサーが押されたままであればモーターを稼動させます。モーターは、タッチ センサーが離れれば停止します。このプログラムは、「タッチ センサー - 比較 - タッチ」モードの待機ブロックを使って押されるまで待機し、別の待機ブロックを使ってモーター停止前に離れるまで待機します。このプロセスは、ループで繰り返されます。
ヒントと豆知識
このプログラムは、異なる方法を使って上記の例 2 と同じことを実施します。
バンプを理解する
タッチ センサーが現在押されているか離れているかを示すのに加えて、タッチ センサーは前に押されて離れたことがあるかどうかを追跡します。これはバンプと呼ばれています。これにより、押されたかどうかを継続的にチェックし、離れるまで待機するということを必要とせず、タッチ センサーがプッシュボタンのように押されたかどうかの確認を容易にします。

タッチ センサーがバンプされたことを示すと、さらにタッチ センサーが押されてから離れた状態になるまでバンプが示されることはありません。例えば、これにより、押されたことに呼応する動作が一回だけ実行されることを容易に保証することができます。

以下の表では、一連のステップの中でタッチ センサーが押されてから離れた状態になる例を示しています。この表では、各動作の後で押された、離れた、そしてバンプをプログラムがテストした結果が示されています。
ステップ動作押された離れたバンプ
1 ボタンが離れた状態で始めます
2 ボタンが押された
3 ボタンが離れた
4 ボタンはまだ離れた状態にあり、プログラムはタッチ センサーを再度テストします。
5 2回目のボタンを押します
6 ボタンは押されたままで、プログラムはタッチ センサーを再度テストします。
7 ボタンが離れた
8 ボタンはまだ離れた状態にあり、プログラムはタッチ センサーを再度テストします。
ボタンが押されたままの時、タッチ センサーはプログラムをテストする度に「押された」状態を表示し続けます。しかしながら、ボタンが離れると、センサーはプログラムがバンプをテストする最初の時にだけバンプを表示します。センサーは、再度押されてから離れるまで、バンプを示しません。
「バンプを使用する」の例
タッチ センサーのバンプ の使い方の例の一部が以下に示されています。
例 6:タッチ センサーが押された時に表示を変更
このプログラムは EV3 ブロックのディスプレイに「Zero」を表示させ、次にタッチ センサーがバンプ(押されて離れた)する度にディスプレイを変更しながら「One」や「Two」を表示させます。
ヒントと豆知識
このプログラムのブロックの待機を変更してバンプではなく「押された」状態をテストする場合、表示は「Zero」から「One」を省略して直接に「Two」へ移行します。やってみましょう!これは、2 番目の「押されるまで待機」のテストを実施する際に表示ブロックを即時に実行し、指が最初に押してからまだボタンを押したままであるためであり、それゆえ 2 番目の待機は即時に終了します。バンプをテストする際、異なるそれぞれの押下に対して 1 回だけテストが続行されます。
例 7:タッチ センサーが押されるまで、パターンを描いて移動
このプログラムは、ロボットの「停止」ボタンとして機能するタッチ センサーが押されるまで、直線運動の後で旋回するというパターンをロボットに繰り返させます。タッチ センサーが押されると、旋回した後で停止します。プログラムは、タッチ センサー モードのループを使って、タッチ センサーがバンプ(押されてから離れる)するまで駆動を繰り返します。
ヒントと豆知識
バンプの代わりに「押された」を使ってこのプログラムを試す場合、通常は、タッチセンサーを押してもロボットが停止しないことがわかります。やってみましょう!これは、2 つの移動ブロックを完了した後で、ループがセンサーを短い時間だけテストするためです。移動ブロックの実行中にセンサーを押して離す場合、「押された」状態は確認されません。バンプを使うことで、タッチ センサーは前に押されてから離れたことを記憶します。
タッチ センサー ブロックとモード
以下の表では、タッチ センサーと併用できるすべてのプログラミング ブロックとモードを示しています。
ブロックモード使用例
待機タッチ センサー - 比較タッチ センサーが押された、離れた、またはバンプの状態まで待機します。
待機タッチ センサー - 変化タッチ センサーの状態が変化するまで待機します。
ループタッチセンサータッチ センサーが押された、離れた、またはバンプするまで、ブロックのシーケンスを繰り返します。
スイッチタッチセンサータッチ センサーが押されたかどうか、離れたかどうか、バンプしたかどうかに応じて、ブロックの 2 つのシーケンスを選択します。
タッチセンサー測定ロジック データ ワイヤーで現在のタッチ センサーの状態(押されたかどうか)を取得します。
タッチセンサー比較ロジック データ ワイヤーで、タッチセンサーが押されるか、離れるか、あるいはバンプしたかどうかテストし、その結果を取得します。
データロギングデータロギングをご確認ください。
タッチ
クイックリンク