これにより、キャンセル(バック)ボタンを押すとプログラムが停止します。次は超音波センサを使ってみましょう。超音波センサを使う超音波センサを使用すると、障害物にぶつかる前に回避することができます。直進するロボットが障害物に一定の距離に近づくと方向を変えるというプログラムを作ります。下記のサンプルプログラムを入力します。ファイル名は「USonic.c」とします。前述と同じように「USonic.prj」も作成しておきます。超音波センサはポート4にモータはポートB、Cに接続します。Program}Off(OUT_BC);closeSensor();}setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。iが300(30cm)よりも小さくなると回避行動が実行されます。これにより、キャンセル(バック)ボタンを押すとプログラムが停止します。次はカラーセンサ(ライントレース)です。1EV3のカラーセンサを使用したライントレースプログラムを作ります。白の部分では右回転、黒の上では左回転するプログラムにすることにより、1つのカラーセンサでも黒の線に沿ってライントレースをすることができます。下記のサンプルプログラムを入力します。ファイル名は「Color_mono.c」とします。前述と同じように「Color_mono.prj」も作成しておきます。カラーセンサはポート3にモータはポートB、Cに接続します。Program}Off(OUT_BC);closeSensor();}setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。今回はライントレースのセンサとして使用するため、モード0(反射モード)にします。getSensor(CH_3)命令により、カラーセンサの読み取り値をiに格納します。カラーセンサの読み取り値が50よりも大きい(白の部分)場合、ポートB(左モータ)のみ前進してロボットは左回転します。逆にカラーセンサの読み取り値が50以下(黒の部分)の場合、ポートC(右モータ)のみ前進してロボットは左回転します。次はカラーセンサ(色)を使ってみましょう。2前述では、EV3のカラーセンサを使用したライントレースプログラムを作りました。これは赤色LEDを発光してその反射光の大きさで白か黒を判断するというプログラムでした。次に色を判別するプログラムを作成します。下記のサンプルプログラムを入力します。ファイル名は「Color_RGB.c」とします。前述と同じように「Color_RGB.prj」も作成しておきます。カラーセンサはポート3に接続します。Program}closeSensor();}setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。今回は色を読みとるモードとして使用するため、モード2(カラーモード)にします。getSensor(CH_3)命令により、カラーセンサの読み取り値をiに格納します。カラーセンサの読み取り値によりEV3本体のLEDが同色で点灯します。時は赤色に点灯します。それ以外の時は点灯しません。次はジャイロセンサを使ってみましょう。MINDSTORMS(RCXやNXT)では、ロボットを決められた角度に回転する時、モータの回転数や回転時間を制御して何度もトライ・アンド・エラーを繰り返して目的の角度でロボットを停止させる必要がありました。EV3からはジャイロセンサが標準で含まれているため、決められた角度になるとモータの回転を止めるという方法でロボットの制御が可能です。下記のサンプルプログラムを入力します。ファイル名は「Gyro.c」とします。前述と同じように「Gyro.prj」も作成しておきます。カラーセンサはポート3にモータはポートB、Cに接続します。Program}Off(OUT_BC);closeSensor();}setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。ジャイロセンサは回転角度を読みとるため、モード0にします。getSensor(CH_2)命令により、最初のロボットの角度をiに格納します。現在のロボットの角度iに目的の角度(サンプルは90度)を足した角度になるまでwhileループ内でモータの回転が実行されます。次はディスプレイへ表示してみましょう。ディスプレイ(液晶)へのテキスト表示ロボットを制御するときに各種センサの状態を把握することは重要です。センサの状態を液晶に表示することでプログラムのデバッグにも非常に役に立ちます。ここでは、超音波センサの読み取り値をディスプレイに表示するプログラムを作成します。下記のサンプルプログラムを入力します。ファイル名は「Display_text.c」とします。前述と同じように「Display_text.prj」も作成しておきます。超音波センサはポート4に接続します。Program}closeSensor();}以下。