車線逸脱警報システム
運転手の居眠りによる事故の防止に貢献し安全性を向上させる仕組みをデザインします。
CONNECT(結びつける)
(5分)
次の質問を使って議論を促しましょう: - 自動運転車は信号の色に反応することができますか? - 運転中に運転手が眠ってしまった場合はどうなりますか? - どうすれば運転手が眠ってしまったことを検出できますか?子どもたちに、自分が見つけたアイデアを記録して共有するためのツールを選んでもらいましょう。文章、動画、画像、スケッチブック、あるいはその ほかのクリエイティブな手段を使って、自分の考えを記録してもらいます。子どもたちに、このレッスンではカラーセンサーを使うことを伝えます。反射光の強さを利用して車輪つきロボットを特定のルートに沿って移動させるプログラムを作り、光に反応するカラーセンサーの機能に対する理解を発展させます。このレッスンでは、カラーセンサーを使って車輪つきロボットの自動運転機能をさらに向上させ、自動運転車が信号に反応する仕組みを再現できるようにすることを説明してください。車輪つきロボットを特定のコースやルートに従って移動させるプログラムを作ってもらいます。
Construct(組み立てる)
(15~30分)
組み立て 子どもたちはロボットエデュケーターの基本モデルを組み立て、カラーセンサーを下向きに取り付けます。
プログラミングに取り組む前に、下のリストを使って子どもたちに組み立てチェックをしてもらいましょう: - 車輪は自由に回転していますか? - カラーセンサーとポート3の間は正しく配線されていますか?プログラム EV3 プログラミングソフトウェア(またはアプリ)で新規プロジェクトを作成してもらいます。車輪つきロボットがルートに従って前進し、赤いブロックの前で停止するようプログラムすることで、色を認識することができるカラーセンサーの機能に親しみます。車輪つきロボットに緑や赤のブロックに対して異なる動作を実行させ、信号に対する自動運転車の動作を再現するよう子どもたちに指示します。コードをループの中に入れると、「信号」ブロックが複数あっても繰り返し反応することができます。子どもたちに、自分が見つけたアイデアを記録してみんなと共有するためのツールを選んでもらいましょう。文章、動画、画像、スケッチブックといったような、創造力を働かせる媒体を選ぶよう促してください。注意 詳しいサポートが必要な子どもたちにはロボットエデュケーターチュートリアルを見るように言いましょう。EV3 ソフトウェアでは:ロボットエデュケーター > ベーシック(駆動ベース) > 直線運動ロボットエデュケーター > ベーシック(駆動ベース)> 曲線運動ロボットエデュケーター > ベーシック(ハードウェア) > カラーセンサー - 色ロボットエデュケーター > ベーシック以降 > ループロボットエデュケーター > ベーシック(駆動ベース) > ラインで停止ロボットエデュケーター > ベーシック以降 > スイッチプログラムに待機ブロックを使用する必要があります。待機ブロックは1色だけでなく複数の色によっても動作させることができることを指摘しましょう。ここでは、カラーセンサーが赤を検出するとモーターが停止するプログラムを作ります。カラーセンサーが選択した色(赤と緑)に対して効率的に反応するよう、子どもたちにカラーセンサーの設定でほかの色の選択が外されていることを確認するよう指示してください。また、このレッスンではスイッチの仕組みやこれらをどうやってプログラムに取り込むかについても学ぶということを説明します。このレッスンではループの仕組みやプログラムへの取り込み方法についても学ぶということを説明します。準備 EV3 基本セットに入っているテクニックのビームパーツを緑と赤の信号として使います。ビームをテーブルに並べ、ロボットがその上を通ると色を検出できるようにします。
回答例
赤色の検出 1.プログラムを開始します。2.モーターBとCを起動します(前進)。3.カラーセンサーが赤色を検出するまで待機します。4.モーターを停止します。
回答例
赤色と緑色の検出ループ 1.プログラムを開始します。2.モーターBとCを起動します(前進)。3.カラーセンサーが赤色を検出するまで待機します。4.モーターを停止します。5.カラーセンサーが緑を検出するまで待機します。6.ステップ2~5を繰り返します。
CONTEMPLATE(よく考える)
(35分)
カラーセンサーの同じ機能を使って、線を超えたときにロボットが認識できるようなプログラムを考えてもらいます。白または色の明るい床やテーブルでロボットを走らせる場合は太い(2cmほど)暗い色の線を、床やテーブルが暗い色の場合は白い線を使います。ロボットがこの線を超えそうになると運転手に対してアラームを鳴らす仕組みを再現してもらいましょう。この機能は、多くの最新車に搭載されています。回答例ファイル名:CODING-04.EV3 (タブ:3)
車線逸脱警報システムのループ 1.プログラムを開始します。2.モーターBとCを起動します(線に向かって曲線で前進)。3.カラーセンサーが黒を検出するまで待機し、検出されたらタスク1と2を開始します。タスク1 4.サウンド「Horn 1」を再生します。タスク2 5.モーターBとCを起動します(線とは逆の方向に曲線で前進)。6.カラーセンサーが白を検出するまで待機します。7.ステップ2~6を繰り返します。
発展オプション 子どもたちに、運転手なしで線にそって走行できる車両を作ってもらいましょう。自動運転車が道路やコースにそって運転する仕組みを調べるよう指示します。ループの中で機能するスイッチブロックについて紹介してください。スイッチブロックを使うと、車輪つきロボットが自分で動くプログラムを自動化できることを説明します。また、スイッチブロックはプログラムの流れを制御するのに使うことができ、タッチセンサーを使った初期設定のスイッチブロックはブール論理の代表例であることについても説明してください。カラーセンサーの検出値によってスイッチブロックの反応が変わることを実演して見せ、真/偽文の中に線のトリガーポイントが使われていることを説明してください(スイッチブロックを見ながら、検出値がトリガーポイントの上の時と下の時とでプログラムがどう動くかに注目します)。線に沿って動くプログラムを作るには、ロボットが波を描きながら線の上を進ませる必要があることを指摘してください。つまり、車輪つきロボットは、線(トリガー)を超えるたびに進行方向を左右に切り替えながら進みます。この動きの例を子どもたちに見せるためにオンラインで適切な例を探してください。このチャレンジで使われるステアリングブロックは「条件つきのオン」(秒数、角度、回転数などで制限)ではなくただの「オン」になっている必要があることに注意してください。車輪つきロボットが線に沿って進行できるようになったら、本物の車のように動作させる(波線ではなく直線で進行する)ためにプログラムを改善できるか考えてみましょう。回答例ファイル名:CODING-04.EV3 (タブ:4)
線に沿った動きのループ 1.プログラムを開始します。2.モーターBとCを起動します(線に向かって曲線で前進)。3.カラーセンサーが黒を検出するまで待機します。4.モーターBとCを起動します(線とは逆の方向に曲線で前進)。5.カラーセンサーが白を検出するまで待機します。6.ステップ2~5を繰り返します。
注意 ここでもカラーセンサーを使いますが、今度は反射光の強さに反応するようにプログラムします。待機ブロックに入力する値を決める際には、ポート ビューで反射光の強さを確認することが必要です。黒または青の色のテープを明るい色(または白)の床やテーブルなどに貼って値を確認するとよいでしょう。スイッチの概念と、なぜそれがブール論理の代表例なのかを説明する時間をとってください。ここからレッスンを発展させるには、カラーセンサーをもう1つ増やし、線に沿って動くプログラムと信号に反応するプログラムを組み合わせて、自動運転の地下鉄やモノレールのようなシステムを再現するプログラムに挑戦してみてください。発表する 子どもたちに、自分の作品や独自の考え、学習の成果を表現するのに最適だと思うツールを自由に選んでもらいましょう。文章、動画、画像、スケッチブックといったような、創造力を働かせる媒体を選ぶよう促してください。このレッスンではたくさんの新しい概念に触れ、EV3 ソフトウェアの新しいブロックにも挑戦しました。この時間を使用して学習内容をまとめ、子どもたちがしっかり理解できていることを確認してください。1つか2つのグループに完成したプログラムを発表してもらいましょう。子どもたちに、このプログラムで起こると予想したことと実際に起こったことについて聞いてみてください。プログラムの結果について何か驚いたことがあったかたずねてみましょう。評価 プログラミング的思考スキルの具体的な評価基準は「評価」の章に掲載されています。
Continue
テキストベースのプログラミングを使用する 様々なプログラミング言語を比較できるよう、子どもたちにテキストベースのプログラミング言語について知ってもらいましょう。
Swift Playground - 回答例
#pragma config(Sensor, S3, colorSensor, sensorEV3 Color, modeEV3Color_Color)
#pragma config(Motor, motorB, leftMotor, tmotorEV3 Large, PIDControl, driveLeft, encoder)
#pragma config(Motor, motorC, rightMotor, tmotorEV3 Large, PIDControl, driveRight, encoder)
/*
Create a program that drives the robot forward until the Color Sensor
sees red.
The robot then stops.
*/
task main()
{
//Set motor speed at 20% (Drive Forwards).
setMotorSpeed(motorB, 20);
setMotorSpeed(motorC, 20);
//Loop while the Color Sensor does see red.
while(getColorName(colorSensor) == colorRed)
{
//Keep driving while the Color Sensor does see red.
sleep(10);
}
//Set motor speed to 0% (Stop).
setMotorSpeed(motorB, 0);
setMotorSpeed(motorC, 0);
}
注意警告安全ではない可能性があります。
以下はテキストベースのプログラミング言語ROBOTCを使用したプログラムの例です。レゴ マインドストーム EV3と互換性があるそのほかのテキストベースのプログラミング言語を使用しても構いません。レゴ エデュケーションはROBOTCプラットフォームの所有権をもたず、ユーザー体験や使用される技術の品質に対するサポートまたは保証は提供いたしません。セットアップに必要な情報はROBOTCによって提供されています:robotc.net他のプログラミング言語を使用した後は必ずレゴ マインドストーム EV3 ブロックファームウェアを再インストールすることをおすすめします。EV3 ブロックの再インストール方法
そのほかのプログラミング言語
教師用サポート
以下のことに取り組みます:ループという概念に親しむスイッチという概念と、それを真偽操作に使う方法を理解する
教育版 レゴ® マインドストーム EV3 基本セット EV3ソフトウェアまたはEV3プログラミングアプリ [ROBOTCソフトウェア(オプション)
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-3-9 / 2-A-6-10 / 2-C-7-11 / 2-C-4-12 / 2-D-5-16 / 2-I-1-20