教育版 レゴ マインドストーム EV3 基本セット

自動運転

路上で運転できるほど安全な自動運転車をデザインします。

45~90分
上級
小学校高学年・中高校
roaming-vehicles-gps

CONNECT(結びつける)

(5分)

このレッスンでは配列と、配列を使って車輪つきロボットの動作を制御する方法を主に学びます。配列とは何か、どのように機能するのか、なぜコンピュータープログラミングにおいて重要なのかについて知識を深めていきます。また、配列をプログラムの中に取り入れる方法についても学びます。導入ビデオを使い、次の質問を使って議論を促しましょう: - 自動駐車はどのような仕組みですか? - 自動駐車を安全にするには何が必要でしょうか? - 自動駐車はどのような動作が必要ですか? - このプログラミングタスクを、GPSデバイス(カーナビ)による運転指示に関連づけて説明してください。ロボットがコースを走行できるように、カーナビのような運転指示をプログラムする方法をグループで話し合ってもらいましょう。子どもたちに、自分が見つけたアイデアを記録して共有するためのツールを選んでもらいましょう。文章、動画、画像、スケッチブック、あるいはそのほかのクリエイティブな手段を使って、自分の考えを記録してもらいます。

Construct(組み立てる)

(15~30分)

組み立て 子どもたちはロボットエデュケーターの基本モデルを組み立てます。

ev3-robot-driving-base

プログラミングに取り組む前に、下のリストを使って子どもたちに組み立てチェックをしてもらいましょう: - モーターからポートBとCの間は正しく配線されていますか? - 車輪は正しく取りつけられていますか? - 車輪は自由に回転していますか?プログラム このタスクでは、EV3 ブロック上のボタンから与えられる、以下のパラメーターに基づいた指示に従ってロボットが動作するようにプログラムするということを子どもたちに説明してください。 - 上ボタンが押されると、ロボットが30 cm前進します - 下ボタンが押されると、ロボットが30 cm後退します - 左ボタンが押されると、ロボットが左に90度曲がります - 右ボタンが押されると、ロボットが右に90度曲がりますプログラムは2つのセクションで構成します。最初のセクションではシーケンスを収集し(例:前進、前進、左、前進、右)、次のセクションではこのシーケンスに従ってロボットを動作させます。まず、配列内に1つのアイテムだけを記録するようプログラムを制限します(1つのアイテムのみで構成される配列は変数です)。子どもたちに、自分が見つけたアイデアを記録してみんなと共有するためのツールを選んでもらいましょう。文章、動画、画像、スケッチブックといったような、創造力を働かせる媒体を選ぶよう促してください。回答例ファイル名:CODING-08.EV3 (タブ:1)

coding-08-01

1つの動作を記録しロボットを動作させます 1.プログラムを開始します。2.「Drive」という変数ブロックを作成します。3.インテリジェント ブロックボタンが押されるまで待機します。4.サウンド「Click 2」を再生します。5.押されたボタンの数値を変数「Drive」に保存します。6.2秒間待機します。7.サウンド「G02」を再生します。8.変数「Drive」に保存されている値を読み取り、その値をスイッチに送信します。9.数値スイッチ:a.Drive = 1 の場合、ロボットを左折させます。b.Drive = 3 の場合、ロボットを右折させます。c.Drive = 4 の場合、ロボットを車輪2回転分前進させます。d.Drive = 5 の場合、ロボットを車輪2回転分後退させます。10.サウンド「Game Over 2」を再生します。

サンプルプログラムをダウンロード32 KB、EV3 デスクトップソフトウェアが必要

注意 詳しいサポートが必要な子どもたちにはロボットエデュケーターチュートリアルを見るように言いましょう。EV3 ソフトウェアでは:ロボットエデュケーター > ベーシック以降 > 配列ロボットエデュケーター > ツール > マイ ブロックロボットエデュケーター > ベーシック以降 > ループロボットエデュケーター > ベーシック以降 > スイッチロボットエデュケーター > ベーシック以降 > 変数ロボットエデュケーター > ベーシック(駆動ベース) > 直線運動ロボットエデュケーター > ベーシック(駆動ベース)> 曲線運動配列操作ブロックはデータのシーケンスを保存するのに使われます。これはしばしば、「複数の列がある1つの行で構成される表」と表現されます。

CONTEMPLATE(よく考える)

(35分)

プログラムを改善して、1つの配列でロボットを動かす5つの動作を記録できるようにしてもらいましょう。回答例ファイル名:CODING-08.EV3 (タブ:2)

coding-08-02
サンプルプログラムをダウンロード32 KB、EV3 デスクトップソフトウェアが必要

回答例ファイル名:CODING-08.EV3 (タブ:3)

start-myblock-satnav

回答例ファイル名:CODING-08.EV3 (タブ:SATNAV)

coding-08-03
サンプルプログラムをダウンロード32 KB、EV3 デスクトップソフトウェアが必要

発表する 子どもたちに、自分の作品や独自の考え、学習の成果を表現するのに最適だと思うツールを自由に選んでもらいましょう。文章、動画、画像、スケッチブックといったような、創造力を働かせる媒体を選ぶよう促してください。子どもたちに集合してもらい、プログラム作品を発表してもらいましょう。どうすればプログラムを改善することができるかたずねてみてください。パラメーターを使ったマイ ブロックを作成したことで、必要な数のステップをプログラムするのが簡単になったでしょうか?ほかのプログラミング方法があるか子どもたちにたずねてみてください。ロボットが室内を自分で動き回れるようプログラミングする別の方法を考えられるでしょうか?評価 プログラミング的思考スキルの具体的な評価基準は「評価」の章に掲載されています。

Continue(さらに続ける)

(45分)

テキストベースのプログラミングを使用する様々なプログラミング言語を比較できるよう、子どもたちにテキストベースのプログラミング言語について知ってもらいましょう。

回答例ファイル名:CODING-08_1.C

#pragma config(StandardModel, “EV3 _ REMBOT”)
/*
Use the buttons on the EV3 brick to program the robot to move around.5 commands can be entered into the EV3 brick. ( Left Button = 1, Right Button = 3, Up Button = 4, Down Button = 5)
*/
int drive[5];
task main()
{
    for(int i = 0; i < 5; i++) //i = i + 1

{
            while(getButtonPress(buttonAny) == 0)
            {
                    //Wait for Any Button to be pressed.
            }
            if(getButtonPress(buttonLeft) == 1) drive[i] = 1;
            else if(getButtonPress(buttonRight) == 1) drive[i] = 3;
            else if(getButtonPress(buttonUp) == 1) drive[i] = 4;
            else if(getButtonPress(buttonDown) == 1) drive[i] = 5;
            playSoundFile(“Click”);
            while(bSoundActive)
            {
                    sleep(10);
            }
            while(getButtonPress(buttonAny) == 1)
            {
                    //Wait for All Buttons to be released.
                    sleep(10);
            }
}
sleep(2000);
playSoundFile(“Go”);
while(bSoundActive)
{
            sleep(10);
}
for(int i = 0; i < 5; i++)
{
            if(drive[i] == 1)
            {
                    //Turn Left Code.
                    moveMotorTarget(motorC, 360, 50);
                    waitUntilMotorStop(motorC);
            }
            else if(drive[i] == 3)
            {
                    //Turn Right Code.
                    moveMotorTarget(motorB, 360, 50);
                    waitUntilMotorStop(motorB);
            }
            else if(drive[i] == 4)
            {
                    //Forward Code.
                    moveMotorTarget(motorB, 360, 50);
                    moveMotorTarget(motorC, 360, 50);
                    waitUntilMotorStop(motorB);
                    waitUntilMotorStop(motorC);
            }
            else if(drive[i] == 5)
            {
                    //Backward Code.
                    moveMotorTarget(motorB, -360, -50);
                    moveMotorTarget(motorC, -360, -50);
                    waitUntilMotorStop(motorB);
                    waitUntilMotorStop(motorC);
            }
}

playSoundFile(“Game over”);
while(bSoundActive)
    {
            sleep(10);
    }
}
サンプルプログラムをダウンロード2 KB、ROBOTCソフトウェアが必要

注意警告安全ではない可能性があります。

以下はテキストベースのプログラミング言語ROBOTCを使用したプログラムの例です。レゴ マインドストーム EV3と互換性があるそのほかのテキストベースのプログラミング言語を使用しても構いません。レゴ エデュケーションはROBOTCプラットフォームの所有権をもたず、ユーザー体験や使用される技術の品質に対するサポートまたは保証は提供いたしません。セットアップに必要な情報はROBOTCによって提供されています:robotc.net他のプログラミング言語を使用した後は必ずレゴ マインドストーム EV3 ブロックファームウェアを再インストールすることをおすすめします。EV3 ブロックの再インストール方法

そのほかのプログラミング言語

サンプルプログラムをダウンロード2 KB、ROBOTCソフトウェアが必要

教師用サポート

以下のことに取り組みます:リスト、表、配列などのデータ構造を適切に使うブール論理(AND、OR、NOTなど)と、回路やプログラミングでの用途に対する理解を発展させる変数ブロックを使用して情報を保存する配列操作ブロックを使う

NGSS
MS-ETS1-1. / MS-ETS1-2. / MS-ETS1-3. /MS-ETS1-4.

CSTA
2-A-2-1 / 2-A-7-2 / 2-A-7-3 / 2-A-7-4 / 2-A-5-5 / 2-A-5-6 / 2-A-5-7 / 2-A-4-8 / 2-A-3-9 / 2-A-6-10 / 2-C-7-11 / 2-C-4-12 / 2-D-5-16 / 2-I-1-20

生徒用資料

生徒用ワークシート

オンラインの HTMLページまたは印刷可能なPDFのいずれかとしてダウンロード、表示、共有いただけます。

以下でシェア:

Google ClassroomGoogle Classroom