計測・制御のプログラミングによる問題解決
ベーシック/アドバンスキット用指導書

教員用

目次
導 入
基本学習

身近なプログラミング …………………………………………………3ページ
センサー・アクチュエーターを活用したプログラムによる計測・制御の学習を行います。

テーマ１ LEDの制御 / ブザーの制御 ……………………………………………11ページ
メインユニットのフルカラー LED やブザーを活用して、信号機の制御やセンサーライトを再現しながらプログラムによる制御の基本を学習します。

テーマ2 ロボットカーの制御 ……………………………………………………29ページ
DCモーターと赤外線フォトリフレクタを活用して、衝突回避やライントレースなどロボットカー
による計測と制御を学習します。

応用学習

サーボモーターの制御をつかってより高度な計測・制御による問題解決学習を行います。

テーマ１ 自動ゲートシステムの制御…………………………………………65ページ

サーボモーターとタッチセンサー、赤外線フォトリフレクタを活用して、自動で開閉するゲートを通して計測と制御を学習します。

テーマ2 自動搬送システム……………………………………………………87ページ

ロボットカーにサーボモーターで制御するアームを取り付け、所定の位置までブロックを搬送する無人搬送ロボットを作成し、課題解決学習に挑戦します。
（基本学習テーマ２ ＋ 応用学習テーマ1）

発展学習

複数のデバイスを無線で連携させ、現実社会の問題解決への応用例を通した発展的内容です。

テーマ１ 交通管制センター ………………………………………………………95ページ
複数の信号機を無線で連携させ、プログラムと通信技術を活用した交通渋滞緩和のための信号機の制御について学習します。
（基本学習テーマ１＋無線通信）

テーマ2

高度道路交通システム ………………………………………………101ページ
信号機の変化の情報を無線で自動車に伝えて、自動車の走行を制御する運転支援システムの構築を通して計測・制御および通信技術について学習します。
（基本学習テーマ１＋基本学習テーマ２＋無線通信）

テーマ３ ETCシステム …………………………………………………………105ページ
自動ゲートが自動車からの無線情報を検知して開閉を制御するETCシステムを通して、計測・制御および通信技術について学習します。
（基本学習テーマ２＋応用学習テーマ１＋無線通信）付録

操作方法 ・ブロック一覧表………………………………………110ページ

部分はシンプルキットの内容には含まれていません。

1

注意事項
端末と接続状態でのご使用時
Studuino:bit にプログラムを転送させずに、端末と Studuino:bit を USB もしくは Bluetooth で「接続」した状態で端末からプログラムを実行する場合、プログラムを Studuino:bit に転送して実行した場合にくらべて、プログラムの処理に遅延が生じる場合があります。この遅延はアプリ上でのプログラムの処理速度および端末と Studuino:bit 間の通信により発生します。センサーの値に応じて自動車を制御するといった、処理の遅延が動作に影響するようなプログラムを作成する場合は、プログラムを転送させて動作確認を行ってください。

乾電池のご使用時
乾電池が消耗してくると、基板にリセットがかかりやすくなります。とくに DC モーターを回転させる瞬間に、最も電圧降下が激しくなり、基板にリセットがかかって意図しない動作をしたり、Bluetooth の接続が切れたりすることがあります。また、電源を入れたまま保管してしまうと、待機電力により意図せず電池の消耗が起こることがあります。保管時は電池ボックスのコネクタを抜いておくようにしてください。

iPad/Android/Chromebook用Bluetooth通信対応のアプリご使用時
Bluetooth 通信対応アプリにおいては、USB での端末と Studuino:bit の通信に対応していないため、以下の点を注意い
ただく必要がございます。あらかじめご理解ください。

①ファームウェア更新について
ファームウェア更新時、端末と Studuino:bit が Wi-Fi 接続されます。
Studuino:bit は Wi-Fi による更新時に下記の状態で動作します。
Studuino:bit 内アクセスポイント SSID: Stu:bit0192837465
Studuino:bit 内 WEB サーバー IP: 192.168.4.1

端末の管理システム等により Wi-Fi の接続先やサーバーのアクセス先に制限がかかっている場合は、ファームウェア
更新が正常に行えません。

アクセスを許可していただくか、Windows 用ソフトウェアを用いて USB ケーブル経由でのファームウェア更新を実施してください。

②Bluetooth接続時の機能制限について
右記の無線ブロックについてはプログラムを Studuino:bit へ転送することで機能しますが、端末と Studuino:bit が Bluetooth 接続されている状態では機能しません。

ArtecRobo2.0サポートガイドはこちら
https://www.artec-kk.co.jp/artecrobo2/pdf/jp/artecrobo2̲supportguide.pdf
2

導入

身近なプログラミング＜学習内容＞●身近な計測・制御システム●プログラミング環境の基本操作

3

１. 身の回りの計測・制御
私たちの身の回りにある電気製品は、計測・制御の仕組みを使って自動的に様々な仕事をしています。決まった動作を繰り返したり、外部の情報を元に柔軟に対応したりすることができるのは、コンピューターやセンサーが使われているからです。このような計測・制御システムは、センサー／コンピューター／アクチュエータの三つの要素から構成されています。エアコンの例を見てみましょう。

例

エアコン

センサー

コンピューター

アクチュエータ

人感センサー（赤外線センサ

センサーで感知・計測した情報

コンピューターからの指令をー）・温感センサーで人の 位を処理・判断する。それを元に受けてモーターの回転数を変置や体温・室内の温度を計

温度や風力を設定しモーターへ

え温度の調整をする。

測する。

指示を出す。

人感センサー

モーター

コンピューター

身近な製品でどういうものがコンピューターやセンサーを活用しているか探してみましょう。
製品名

センサーで計測しているもの

計測結果からコンピューターが行う動作

風呂給湯器

水量

給湯する / 給湯を止める

お掃除ロボ

壁や障害物の有無

壁や障害物を避けるように動く

4

２. プログラミングとはエアコンの例のように、コンピューターが使われている機械はセンサーから得た情報を元に、あらかじめ人間が決めた手順通りにアクチュエータを動かします。

例

エアコンを動かすとき人間が決めたエアコンの動作手順

起動スイッチが押される

設定温度を読み取る

現在の温度を計測する

繰り返す

設定温度に近づくように送風する

このようにコンピューターの動作手順を示したものをプログラムと言います。プログラムは人間が話すときに使う言葉とは違う、特別な言葉を使って表します。この言葉をプログラミング言語といい、プログラミング言語でプログ
ラムを書くことをプログラミングと言います。

▲プログラミング言語で書かれたプログラムの画面

5

３. 計測・制御システムとArtecRobo2.0パーツの対応
ArtecRobo2.0のパーツは以下のようなコンピューターによる計測・制御システムで使われる各要素に対応しています。
自動ドアの動作の流れ

押しボタン式信号の動作の流れ

センサー
周囲の情報を計測する
赤外線フォトリフレクタ

ボタン

物体の有無を調べる

押されたことを調べる

コンピューターセンサーで得た情報を判断しアクチュエータに動作命令を出すメインユニット（Studuino:bit)

アクチュエータ
コンピューターからの命令に従って動作する

DCモーター

サーボモーター

電気を回転する力に変える

LEDライトブザー

電気を光に変える

電気を音に変える※アクチュエータとはエネルギーを動きに変えるものを指すため、動きのないLEDやブザーはアクチュエータに含まれません。

6

４. プログラミング環境
この授業では、文字の代わりにブロックのような絵をつないでコンピューターへの命令をプログラミングできる「ビジュアルプログラミング言語」を使います。

①ソフトウェアの立ち上げ
ロボットモードを選択してください。

カテゴリー：命令の種類を選ぶことができます

言語の選択

メニュー

ブロックパレット：
センサーやアクチュエータへの命令が表示されます

スクリプトエリア：
命令をつないでプログラムをつくることができます7

②操作方法◆ プログラムの作成
ブロックパレットにある命令をおもちゃのブロックのようにつなぐことでプログラムをつくります。この命令のひとつひとつを「ブロック」と呼びます。

ブロック

つなぐ

◆ ブロックの削除
削除するブロックをブロックパレットにドラッグ＆ドロップします。

ドラッグ＆ドロップ

ブロック
パレット

8

カテゴリーの種類について
カテゴリーは「動き」「 見た目」「 音」「 イベント」「 制御」「 調べる」
「 無線」
「 演算」
「 変数」
「 関数」の10種類があります。それぞれのアイコンをクリックすることで、カテゴリーを選択することができます。

DC モーターやサーボモーターなど、アクチュエータの動きを命令するブロックです。
起動時、ブロックは表示されていません。 後述の「入出力設定」で使用可能になります。

LEDの点灯・消灯の命令をするブロックです。

ブザーを鳴らす命令をするブロックです。

プログラムスタートを行うブロックです。

命令の実行順を制御するブロックです。

センサーを指定して周りの情報を調べるブロックです。

無線で送受信を行うブロックです。

計算の命令を出したり、条件式を作成するブロックです。

数値情報の記録をする変数やリストブロックを作成します。

関数としてブロックを作成します。

9

基本学習 テーマ１
LED の制御＜学習内容＞●LED の制御 / ブザーの制御●順次処理●繰り返し処理●条件分岐処理10

１. 順次処理のプログラム
命令を順番通りに行う処理のことを「順次処理」といいます。LED を使った信号機をつくる中で、順次処理のプログラム
を学びましょう。
青信号を５秒点灯

赤信号を５秒点灯

黄信号を１秒点灯①「信号機」の組み立て
①

②

③

BATT

11

②コンピューターとの通信

Windows/Mac の場合

USB ケーブルによる通信②「編集」から接続を選択します。

①コンピューターとメインユニット（Studuino:bit）
を USB ケーブルで接続します。

Android/iPad/Chromebook の場合①「編集」から接続を選択します。

Bluetooth による通信②表示されるメッセージに従い、メインユニット（Studuino:bit) の B ボタンを押しながらリセットボタンをおしてください。

③メインユニット（Studuino:bit) のLED に表示された点灯パターンと同じデバイスを選択してください。

RESET

右図のようなセンサーボードが表示されると、通信が正常に行われています。

Bluetooth による通信時は通信ランプ

通信ランプが青に点灯します。

12

③LED を点灯させるプログラム
LED を光らせる命令を出すには次のブロックをつかいます。

X
0

0

1

2

3 4

1
Y

2
3
4

LED の座標は上図のとおり

ブロックをドラッグして光らせたい LED の座標と色を指定します。

をクリックして LED が点灯することを確認してください。
ドラッグ

やってみよう！
その他のブロックについてもどのように LED が点灯するか同様に確認してください。

… … … 指 定した座 標 の L E D を消 灯します。

… … … 指 定した文 字をスクロー ル 表 示します。
（半角英数字）… … … 全ての L E D の 点 灯 色を個 別に指 定します。

… … … 全ての L E D の 点 灯 色を同 時に指 定します。

… … … 全ての L E D を消 灯します。

13

④LED を 1 秒間だけ点灯させるプログラムのブロックとを順番につなげましょう。

このようにブロックをつなげると、上から順番に命令が送られて、プログラムが実行されます。
ドラッグしたブロックを影ができたところではなすと、ブロックどうしをつなぐことができます。

ブロックを

と

の間につなぎましょう。

並べたブロックをクリックするとプログラムが転送されて実行されます。
LED が１秒間光って消えることを確認しましょう。

の数値を変えることで、LED の点灯時間を設定することができます。
また、時間は少数点も設定することができるので、自由に変えて動かしてみましょう。
※コンピュータ内の通信処理速度により設定した時間より少し長い時間点灯する場合があります。

14

プログラムは必ず上から順番に実行されます。

「１秒待つ」のブロックを入れないとどうなるのか？
左のプログラムで動作をさせた場合、LED はほとんど点灯しません。
これはコンピューターがプログラムを非常に高速で処理していることが
原因です。
つまり、
「LED 点灯」の命令の直後に、「LED 消灯」の命令が行われてしま
うため、LED を点灯している時間がありません。
※一瞬点灯する場合がありますが、これはコンピューターとの通信の際のわずかな遅延によるものです。

⑤接続を解除するプログラムの動作が確認できたら、接続を解除しましょう。
画面上方の編集より、接続解除を選びます。

⑥プログラムを転送する
ここまではコンピューターとメインユニット（Studuino:bit）が通信し、コンピューターからの命令でプログラムを動かしていました。
作成したプログラムをメインユニット（Studuino:bit）に転送することで、メインユニット（Studuino:bit）のなかにプログラムが保存され、コンピューターから切り離してもプログラムを実行することができるようになります。
コンピューターと接続中
・作成したプログラムはパソコン上で実行される。
動作命令

動作信号

プログラムを作るたびに転送を行う必要がありますが、USB
プログラムの実行

ケーブルや Bluetooth の通信を切断してもプログラムを

動作信号の出力実行できたり、プログラムの実行や読み込みが早くなるといプログラム作成・転送

うメリットもあります。

・作成したプログラムはメインユニット（Studuino:bit）に保存される。
・保存したプログラムはメインユニット（Studuino:bit）上で実行される。
作成した
プログラム

プログラムの転送

動作信号

プログラムの保存 プログラムの実行15◆ プログラムの転送方法①作成したプログラムの一番上にをつなぎます。

②編集から「転送」を選びます。

Android/iPad/Chromebook の場合

Bluetooth による通信①表示されるメッセージに従い、メインユ
ニット（Studuino:bit) の B ボタンを押しながらリセットボタンを押してください。
RESET③プログラムを転送する先を指定してください。
※0 〜 9 まで選択できます。

④転送が完了すると、自動的にプログラムが実行されます。
再度動かしたい場合はリセットボタンを押してください。

16②メインユニット（Studuino:bit) のLED に表示された点灯パターンと同
じデバイスを選択してください。

複数のプログラムを転送した場合の実行方法
複数のプログラムを 0 〜 9 の番号を指定して転送することができます。
通常は最後に転送したプログラムが実行されますが、以下の方法で番号を指定して転送済みのプログラムを実行することができます。

①電源を接続する（通常起動）（１）電池ボックスもしくは USB ケーブルをメインユニットに接続します。
（２）電源ランプ（緑）が点灯し、電源が自動的に ON になり起動します。
通常起動時は前に実行したプログラムが自動的に実行されます。

②プログラム選択モードへの移行

リセットボタン（１）A ボタンを押したまま、リセットボタンを押してください。
リセットボタンを押すと再起動のため一時的に電源ランプが消灯します。
（２）
リセットボタンを離して 3 秒後に電源ランプが再点灯したら、A ボタンを離します。

（３）緑の LED で 0 が表示されるとプログラム選択モードへ移行しています。

③プログラムの選択・起動（１）
プログラム選択モード時に A ボタンを押すと、表示が 0・1・2・・・と切り替わります。9 まで切り替わると 0 に戻ります。
（２）選択した番号で B ボタンを押すと、各番号に割り振られたプログラムが実行されます。
次回より通常起動時に③で選択したプログラムが自動で実行されます。

※工場出荷段階で動作確認用に各番号にはサンプルプログラムが書き込まれています。
※サンプルプログラムはソフトウェアを使用して新たなプログラムを書き込むと上書きされます。

17

A ボタン

練習課題

自動車用信号機のプログラムの作成

次の動作の手順をフローチャートにまとめたあと、プログラムをつくりましょう。

青信号を５秒点灯

黄信号を１秒点灯

赤信号を５秒点灯

プログラム例
はじめ
青信号を点灯５秒待つ
青信号を消灯黄信号を点灯１秒待つ
黄信号を消灯赤信号を点灯５秒待つ
赤信号を消灯おわり

ブロックの代わりにを使用しても同様のプログラムを作成することができます。

18

２. 繰り返しのプログラム
ある命令を繰り返し行う処理のことを「繰り返し処理」といいます。前のページで作成した信号機のプログラムは赤信号の点灯が完了すると消灯し、その後はプログラムは動きません。実際の信号機のように繰り返し動作させるには、この「繰り返し処理」が必要になります。

①フローチャート
同じ動作を複数回繰り返す場合、以下の記号を使います。
信号機の動作を表すフローチャートをまとめましょう。

はじめ
繰り返し○回

繰り返し○回

繰り返し処理の開始

青信号を点灯５秒待つ

繰り返し戻る

繰り返し処理の終了②プログラムの改造（繰り返し処理の追加）
同じ動きを指定回数繰り返させたい場合は、「 ○回繰り返す」
ブロックを、ずっと繰り返させたい場合は「ずっと」ブロックを利用します。
下図のように自動車用信号機のプログラム全体を囲むようにまたはを追加してください。

青信号を消灯黄信号を点灯１秒待つ
黄信号を消灯赤信号を点灯５秒待つ
赤信号を消灯繰り返し戻るおわり「終了」がなくなり、繰り返し続けることは下のフローチャートのように矢印で表すことも
できます。
はじめ

青信号を点灯５秒待つ
青信号を消灯黄信号を点灯１秒待つ
黄信号を消灯赤信号を点灯５秒待つ
赤信号を消灯

終了しない

19

練習課題

歩行者用信号機のプログラムの作成

次の動作の手順をフローチャートにまとめたあと、プログラムをつくりましょう。
青信号を５回点滅
点滅周期（１秒）

青信号を５秒点灯

赤信号を５秒点灯

ずっと繰り返しプログラム例

はじめ

青信号を点灯
５秒待つ
繰り返し

５回

青信号を点灯
0.5 秒待つ
青信号を消灯
0.5 秒待つ
繰り返し戻る
赤信号を点灯５秒待つ
赤信号を消灯ブロックの代わりにを使用しても同様のプログラムを作成することができます。

20

３. 条件分岐のプログラム
条件によって動作を分ける処理のことを「条件分岐処理」といいます。押しボタン式信号機のプログラム作成を通して条件分岐のプログラムを学びましょう。

①ボタンの数値確認
センサーの情報は数値で表されます。
メインユニット（Studuino:bit) をコンピュータと接続中に表示されるセン
サーボードでプッシュボタンが押されているときと押されていないときの数値の変化を確認しましょう。

ボタンが押されている

ボタンが押されていない

ときの数値

ときの数値

0

1

②フローチャート
条件分岐を表す場合、以下の記号を使います。
No

条件

条件で処理を分ける

Yes
条件は

と

を組み合わせてつくることができます。
数値を入力作成した条件は右図の各種制御ブロックの空欄に入れて使うことができます。
………… 条件が成り立つときだけ、囲まれたプログラムが処理されます。

………… 条件が成り立つときだけ、上段で囲まれたプログラムが処理され、条件が成り立たないときは、下段で囲まれたプログラムが処理されます。

………… 条件が成り立つまで、次に続くプログラムを処理せずに待ちます。
………… 条件が成り立つまで、囲まれたプログラムを繰り返し処理します。

21

③Ａボタンを押している間 LED が点灯するプログラム

はじめ

LED を消灯

Ａボタンが
押された？

No

Yes
LED を点灯「ずっと」のブロックを入れないとどうなるのか？
「ずっと」を入れない場合のフローチャートとプログラムは以下のようになります。
このプログラムを動作させると、A ボタンを押しても全く反応しなくなります。

はじめ

これは、プログラムが非常に高速で処理されることで、プログラ

ムを動作させた瞬間にプログラムが終了してしまうからです。

LED を消灯「ずっと」のブロックを入れることで、A ボタンの値を常に確認
Ａボタンが
押された？

No

するようになるため想定通りの動作をするようになります。

動作させた瞬間にプログラ

Yes

ムが終了。

LED を点灯

プログラム終了後に A ボタ
ンを押しても反応しない。

おわり

22

練習課題
＜押しボタン式信号機のプログラム＞

次の動作の手順をフローチャートにまとめたあと、プログラムをつくりましょう。
赤信号を点灯もしA ボタンが押されたら5 秒間待って赤信号を消灯

ずっと繰り返しプログラム例

はじめ

赤信号を点灯

ボタンが
押された？

No

Yes
５秒待つ
赤信号を消灯青信号を点灯
５秒待つ
繰り返し

５回

青信号を点灯
0.5 秒待つ
青信号を消灯
0.5 秒待つ
繰り返し戻る

23

青信号を５秒点灯

青信号を５回点滅
点滅周期（１秒）

発展学習①

ブザーをつかった制御＜音響装置付信号機のプログラム＞
目の不自由な人のために、信号がかわったことを音で知らせてくれる信号機があります。
これを音響装置付き信号機といいます。
押しボタン式信号機のプログラムで青信号が点灯している間、ブザーの音を鳴らすプログラムを追加して音響装置付き
信号機にしてみましょう。

この間、音を流す
赤信号を点灯もしA ボタンが押されたら5 秒間待って赤信号を消灯

青信号を点灯青信号を５回点滅
点滅周期（１秒）

ずっと繰り返しプログラム例

はじめ

赤信号を点灯

ボタンが
押された？

No

Yes
５秒待つ
赤信号を消灯青信号を点灯

この処理の間、ブザーを鳴らすプログラムを追加します。

５秒待つ
繰り返し

５回

青信号を点灯
0.5 秒待つ
青信号を消灯
0.5 秒待つ
繰り返し戻る24

①ブザーの音を鳴らすプログラム
プログラム例
1 秒間音を鳴らしてとめるプログラム……………指定した高さの音を鳴らします。

＝……指定した高さの音を指定時間鳴らす。

……ブザーからの音を止める。

やってみよう！
音の高さや長さを変えてみよう。

音の高さを変える
音の長さを変える②カッコウの音をつくろう「カッコウ」の 音は音ぷにすると「ミ（ 6 4 ）・ド (6 0 ) 」です。

ミ
「カッコウ」の音の長さの決め方「カッコウ」の音の楽譜「カッコウ」の音のプログラム

音楽には音の長さや音同士の間隔

1などが決められた「楽譜」があります。カッコウの曲にも楽譜があり、1

今回のプログラムの 2 つの音と 2回の休みの長さも実際の楽譜に合2わせて設定しています。

1
1

2
2

カッコウの音を 5 回繰り返す場合は、右図のように「５回繰り返す」ブロックで囲みます。

25

ド

2

③青信号が点灯している間音が鳴るようにしよう
関数ブロックを作成します。
スクリプトエリアに表示される関数名を入力します。
（ここでは buzzer とします）

関数名を入力（半角英数字）関数の定義ブロック 関数

作成したプログラムをつなげます。

クリック
関数

クリック

練 習 課 題 で 作 成 し た 押 し ボ タ ン 式 信 号 機 の 青信号が点灯した後の呼び出しブロックと、関数のを 入 れ 替 え ま す。

関数

26

に②で

発展学習② 光センサーをつかった制御＜センサーライトのプログラム＞
周囲が暗くなったら自動で照明が点灯する、センサーライトのプログラムを考えましょう。
①「編集」より接続を選択しコンピュー

光センサー

タと接続してください。

②センサーボードで光センサーの値を確認します。
光センサーを手で覆って暗くするとセンサーの値がどのように変化するか確認しましょう。
③しきい値の決定
どの程度暗くなったら LED を点灯させるかは②でしらべた光センサーの値で決めます。

このような点灯させる条件となる値のことを「しきい値」といいます。

しきい値より小さければ0

しきい値より大きければ暗いと判断

明るいと判断しきい値④光センサーの値が一定以上小さくなったら
5 秒間 LED を点灯させて消灯させるプログラムを考えましょう。
条件はとを組み合わせてつくることができます。
しきい値を入力

フローチャート

プログラム例
はじめ

LED を消灯

周囲が暗い（光センサー＜70）No

Yes
LED を点灯
5 秒待つ

27

100

基本学習 テーマ2
ロボットカーの制御＜学習内容＞● DCモーターの制御● 車の制御● 赤外線フォトリフレクタ● 衝突回避カー● 落下回避カー● ライントレースカー

28

①組み立て
①

②

③

④

⑤

⑥ ×2

⑧

⑨

②

⑦
⑤

29

⑩

BATT

M1
M2

②入出力設定「編集」より「入出力設定」を選択し、M1 と M2 に DC モーターを選択します。

30

③コンピューターとの通信
Windows/Mac の場合

USBケーブルによる通信②「編集」より接続を選択します。

①コンピュータとメインユニット（Studuino:bit）を USB ケーブルで接続します。

Android/iPad/Chromebook の場合①「編集」より接続を選択します。

Bluetoothによる通信②表示されるメッセージに従い、メインユニット（Studuino:bit) の B ボタンを押しながらリセットボタンを押してください。

RESET③メインユニット（Studuino:bit) のLED に表示された点灯パターンと同じデバイスを選択してください。

右図のようなセンサーボードが表示されると、通信が正常に行われています。
Bluetooth による通信時は通信ランプが青に点灯します。

通信ランプ

31

1. DCモーターの動作確認
DC モーターを動かして、プログラムと動作の関係を調べましょう。
M1 につないだ左の DC モーターのタイヤに注目しましょう。
※DC モーターを動かす場合は必ず電池ボックスをロボット
拡張ユニット側に接続するようにしてください。

M1

DCモーターは回転の速さと向きを設定するプログラムで制御されています。どちらか一方でもプログラムが抜けているとDCモーターは動きません。DCモーターのブロックをスクリプトエリアに並べましょう。

各ブロックをクリックすると、そのブロックの処理が行われます。

DCモーターの速度設定
DCモーターの回転する速さを100に設定するために、をクリックしましょう。
回転する速さはブロックの数値に対応しています。
最小０

設定できる数値

最大

〜

20

100

動かない

遅い

速い

※数値を変更した場合、再度をクリックしないと、変更した数値が反映されません。

32

DCモーターの回転をクリックした後、をクリックすると DC モーターが 回転します。
※ 速さを設定した後でないと、をクリックしても DC モーターは動きません。

「正転」
と
「逆転」
を変えることで、
DCモーターの回転する向きを変えることができます。

ロボットカーのタイヤは左右両方のDC モーターを逆転させる方向に回転させたときに下図のように前進します。

DC モーターの回転の向きは以下のようになります。

正転
前進
逆転

逆転

DCモーターの停止をクリックして、DC モーターの回転を停止させましょう。DC モーターの止め方は「ブレーキなし」と「ブレーキあり」を選択することができます。

DCモーターにかかる電圧を0にして、惰性でゆっくりと止める

DCモーターを短絡させて負荷をかけ、ぴったりと止める

33

プログラミング
車を１秒だけ前進させるプログラムをつくりましょう。
前進する

1 秒待つ

停止

両方のタイヤの DC モーターが同じ速さで回転すると、車は前に進みます。したがって、M1 と M2 の速さをともに100 にして、逆転させましょう。

つなぐ
M2に変更

つぎに、制御カテゴリーにある「１秒待つ」のブロックを先ほどのブロックの下につなぎましょう。

34

最後に、DCモーターを止めるブロックをつなぎます。
プログラムを転送して動きを確認しましょう。

実プ
行ロ
さグ
れラ
るム
流が
れ

プログラム転送後、USB ケーブルを外して動かす場合、ロボット拡張ユニット
側面の電源ボタンを長押し（2 秒）して電源を ON にしてください。
電源ボタン「１秒待つ」のブロックを入れないとどうなるのか？

左のプログラムで動作をさせた場合、車はほとんど動きません。これはコンピューターがプログラムを非常に高速で処理していることが原因です。つまり、「DC モーターを正転」の命令の直後に、「DC モータ
ーを止める」の命令が行われてしまうため、車が前に進む時間がありません。

「１秒待つ」を入れない場合「１秒待つ」を入れる場合

１秒間前進

DCモーターが回転する時間がないため前に進めない

前進

停止

前進

35

停止

モーターの校正
左右の DC モーターの個体差により、左右同じ速さで設定してもまっすぐに走らない場合があります。
「編集」の「モーター校正」からＤC モーターの回転の速さを校正してください。

※

②

②

①
③
①回転ボタンをクリックすると接続された DC モーターが回転します。
②Ｍ１・Ｍ２の値を小さくすると回転速度が制限されます。
Ｍ１・Ｍ２の値を調整して同じ速さで回転するように校正します。
③設定をクリックして校正を完了します。

※モーター校正情報の保存先を選択してください。
1 台のコンピューターにつき 1 台のロボットを使う場合は「アプリに保存する」を選択してください。
1 台のコンピューターにつき複数のロボットを使う場合は「プロジェクトに保存する」を選択してください。

36

練習課題
次の動作の手順をフローチャートにまとめたあと、プログラムをつくりましょう。
前進する

3秒待つ

後退する

3秒待つ

停止する

DCモーターの回転する速さを途中ではじめ変更する必要がない場合は、最初に1度だけ設定します。

DCモーターM1の速さを100にする
DCモーターM2の速さを100にする
DCモーターM1を逆転
DCモーターM2を逆転
3秒待つ
DCモーターM1を正転
DCモーターM2を正転
3秒待つ
DCモーターM1を停止
DCモーターM2を停止
おわり

37

28

cm

27

２. 車の制御26

1 秒間前進させたときの距離を調べましょう。また、車をぴったり９０度曲げたり、回転させるときに DC モーターを動かす時間を調べましょう。

※進む距離や曲がったり回転する時間は DC モーターの個体差や電池の残量によって異なる場合があります。

直進する

曲がる

回転する

90 度右回転

25
24
23
22
21
20

90 度右折19
90 度左折前進18
90 度左回転

17
16
15
14
13
12

①前進

11

１秒間前進させるプログラムをつくり、ページ右側の定規に沿って車を動かし移動した距離を調べましょう。

10
9
8
7
6

テキスト

5
4

1 秒間で

cm進む。

3
2
1

38

0

②右折
左（M1) の DC モーターだけを逆転させることで右折ができます。イラストに合わせて、ぴったり 90 度右折するために必要な時間を調べましょう。

左のプログラムをつくり、「待つ」ブロックの時間を調整しましょう。

秒で90度右折する。

39

③左折
右（M2) の DC モーターだけを逆転させることで左折ができます。イラストに合わせて、ぴったり 90 度左折するために必要な時間を調べましょう

左のプログラムをつくり、「待つ」ブロックの時間を調整しましょう。

秒で 90 度左折する。

40

④右回転
左（M1) の DC モーターを逆転させ、右 (M2) の DC モーターを正転させることで右回転ができます。イラストに合わ
せて、ぴったり 90 度右に回転するために必要な時間を調べましょう。

左のプログラムをつくり、「待つ」ブロックの時間を調整しましょう。

秒で 90 度右に回転する。

41

⑤左回転
右（M2) の DC モーターを逆転させ、左（M1) の DC モーターを正転させることで左回転ができます。イラストに合わ
せて、ぴったり 90 度左に回転するために必要な時間を調べましょう。

左のプログラムをつくり、「待つ」ブロックの時間を調整しましょう。

秒で 90 度左に回転する。

42

練習課題
直進と右回転を繰り返すことで、1 周回るプログラムをつくりましょう。

②直進して90 度右回転①直進して90 度右回転

③直進して

⑤停止

90 度右回転④直進して90 度右回転①フローチャート
直進と右回転を4回繰り返すと1周回ることになります。同じ動作を複数回繰り返す場合、以下の記号を使います。動作を表すフローチャートをまとめましょう。

はじめ
DCモーターM1の速さを100にする
DCモーターM2の速さを100にする
繰り返し 4 回
DC モーター M1 を逆転繰り返し○回

繰り返し処理の開始

繰り返し戻る

繰り返し処理の終了

DC モーター M2 を逆転
1 秒待つ
DC モーター M1 を逆転
DC モーター M2 を正転※右回転する秒数は41ページで確認した秒数を参考にしてください。

秒待つ
繰り返し戻るDC モーター M1 を停止
DC モーター M2 を停止
おわり

43②プログラミング
まとめたフローチャートをもとにプログラムをつくりましょう。同じ動きを複数回繰り返す場合、利用すると簡単にプログラムをつくることができます。

に囲まれたブロックが指定した回数だけ繰

り返し実行されます。

回数を変える③無限に繰り返しをするプログラム
同じ動きをずっと繰り返させたい場合は、を利用します。

「４回繰り返す」を「ずっと」のブロックに変更しましょう。

はじめ
DCモーターM1の速さを100にする

DCモーターM2の速さを100にする

DC モーター M1 を逆転

DC モーター M2 を逆転

1 秒待つ「終了」がなくなり、繰り返し続けることは右のフローチャートのよDC モーター M1 を逆転

うに矢印で表すこともできます。※停止する必要がなくなるので、停止ブロックは削除してください。

DC モーター M2 を正転

秒待つ

終了しない

44

を

３. 衝突回避カーの製作
赤外線フォトリフレクタを利用して衝突回避カーをつくりましょう。
前進する

障害物を感知する

停止する

前進する

障害物がなくなるまで待つ

繰り返し

自動車の運転を補助するシステム
自動車にはセンサーを用いた運転を補助する様々なシステムが存在します。

自動ブレーキシステム
前を走る自動車や歩行 者 、障 害 物 に ぶ つ
かりそうになったときに自動でブレー キをかけて停止します。
緊急ブレーキSTOP

速度自動調整システム100km
80km

高速道路などで前を走る自動車

80km 100kmと安全な距離を保ちながら、自動で速さを調整します。長い時間の運転や、渋滞中の負担を少

80km

80km

なくすることができます。

80km

80km
80km

80km

45

①赤外線フォトリフレクタとは赤外線フォトリフレクタは「赤外線」という光の「反射」を利用したセンサーです。中央の２つの丸い部分は透明な方が赤外線を発光し、黒い方は赤外線を検出します。発光部から出た赤外線が対象物にぶつかって反射してきたとこ
ろを検出部で読み取ります。そのときの赤外線の強さで、対象物が存在するかどうかを知ることができます。
検出

赤外線を検出するところ

赤外線

セ
ン
サ
本
体

反射した光

検出部

対
象
物

赤外線
発光部

赤外線を発光するところ

赤外線フォトリフレクタの使い方
・太陽光には赤外線が多く含まれています。太陽光が検出部に当たらないように注意してください。

太陽光

対
象
物

対
象
物
反射光

反射光

太陽光を強く検出してしまう

対象物で反射した光を強く検出できる

・黒系の色は赤外線を吸収しやすく反射しにくいため、反射光の検出量が少なくなります。

ほとんど反射せずに吸収する

反射 する

赤外線
発光部

赤外線

白い
ブロック

発光部

46

黒い
ブロック

②「衝突回避カー」の組み立て
①

②

③

P0

赤外線フォトリフレクタ

47

③入出力設定
M1、M2にDCモーター、P0に赤外線フォトリフレクタを選択します。

④赤外線フォトリフレクタの数値確認
衝突回避カーは前に障害物が存在したときにセンサーで感知して衝突を避けるため自動で停止します。この「感知」の役割を赤外線フォトリフレクタで行います。テストモードにして、センサー・ボードで赤外線フォトリフレクタの値を確認しましょう。下のイラストに合わせて、車を置きます。赤外線フォトリフ

レクタの前 10cm、5cm、3cm、2cm、1cm、0cm に障害物（ブロック白四角）
があるときの値を確認しましょう。
※赤外線フォトリフレクタの値は太陽光の影響を受けるため、日光のあたる
窓に向けないようにしてください。

0

距離

1

0cm

2

3

4

1cm

5

2cm

6

7

3cm

値

※赤外線フォトリフレクタの個体差で、同じ距離でも数値が異なる場合があります。

48

8

9

5cm

10

10cm

⑤しきい値の決定
赤外線フォトリフレクタの値で障害物があるときとないときを区別する場合は、２つの状態の境目となる値を決めて判断します。このような境目となる値のことを「しきい値」と言います。

0

障害物がない100

障害物がある

しきい値

今回は車の前５cmに障害物があるときとないときを区別する
今回は車の前５cmに障害物があるときとないときを区別するようにしきい値を決めましょう。

0

1

2

3

4

障害物が
5cm 前にない

5

6

7

8

9

10

障害物が

5cm 前にある

しきい値49

⑥フローチャート
45ページに示した動作を実現できるように手順を考えてフローチャートをまとめましょう。
条件の部分を決めたしきい値を利用して書き換えましょう。また、「障害物が無くなるまで待つ」は赤外線フォトリフレクタの値 ＜まで待つを使いましょう。

はじめ

DCモーターM1の速さを100にする

DCモーターM2の速さを100にする

DCモーターM1を逆転

DCモーターM2を逆転

No

赤外線フォトリフレクタのP0の値＞
Yes
DCモーターM1を停止

DCモーターM2を停止

赤外線フォトリフレクタP0の値 ＜DCモーターM1を逆転

DCモーターM2を逆転

50

まで待つ

⑦プログラミング「制御」カテゴリーにあるを使ってプログラムをつくりましょう。

を使うと、条件を満たすまでプログラムの処理を待つことができます。

衝突回避カーの別解以下のプログラムでも衝突回避カーの動作が実現できます。

はじめ
DCモーターM1の速さを100にする

DCモーターM2の速さを100にする

DCモーターM1を逆転
DCモーターM2を逆転

赤外線フォトリフレクタのA0の値＞

No

Yes

DCモーターM1を停止

DCモーターM2を停止

プログラムのつくり方は一つとは限りません。想定す赤外線フォトリフレクタP0の値 ＜る動作が実現できればどのようなプログラムでも構いまで待つません。自分なりに考えてプログラムをつくることが
大切です。

51

４. 落下回避カーの製作
赤外線フォトリフレクタの使い方を工夫することで、机から落下しそうになったときに後退して落下を避ける車をつくることができます。
前進する

床がなくなったことを感知する

1秒後退する

前進する

右に90度回転する

床なし

床あり

①「落下回避カー」の組み立て
今回は床の有無を感知するので、赤外線フォトリフレクタの向きを下向きに付け替えましょう。

52

①

②

③

赤外線フォトリフレクタ

P053

②入出力設定
M1とM2にDCモーター、P0に赤外線
フォトリフレクタを選択します。

③しきい値の決定
テストモードで床があるときとないときの赤外線フォトリフレクタの値を確認して、しきい値を決めましょう。

床があるとき床がないとき0100
床がないときしきい値

床があるとき

しきい値の決定
しきい値を 1 や

3 のように調べたどちらかの値の近くに決めてしまうと、赤外線フォトリフレクタの値がそこから少し変わるだけで、ブロックの有無を区別してしまいます。センサの値は周りの環境によって変わりやすいため誤って判断しないように、 2 のように調べた２つの値の中央あたりをしきい値として決めましょう。

1

2

3

0

100

床があるときの値

床がないときの値54

④落下回避カーの動作整理
動作とプログラムの関係を整理しましょう。

順番

動作

プログラム

前進する

DCモーター M1 の速さを100にする

床なし

DCモーター M2 の速さを100にする①

DCモーター M1 を逆転

床あり

DCモーター M2 を逆転

床がなくなったことを感知する

赤外線フォトリフレクタ P0 の値②＜ しきい値

1秒後退する

DCモーター M1 を正転③

DCモーター M2 を正転
1秒待つ

右に90度回転する

DCモーター M1 を逆転④

DCモーター M2 を正転
秒待つ

前進する

DCモーター M1 を逆転⑤

DCモーター M2 を逆転②〜⑤をずっと繰り返す※右に90度回転させる秒数は54ページで調べたものを参考にしてください。

55

⑤フローチャート
55ページで整理した動作をフローチャートにまとめましょう。

はじめ
DCモーターM1の速さを100にする
DCモーターM2の速さを100にする
DCモーターM1を逆転
DCモーターM2を逆転

赤外線フォトリフレクタのP0の値＜
Yes
DCモーターM1を正転

DCモーターM2を正転

1秒待つ

DCモーターM1を逆転

DCモーターM2を正転

秒待つ

DCモーターM1を逆転

DCモーターM2を逆転

56

No

⑥プログラミング
56ページのフローチャートを参考にプログラムを完成させましょう。

落下回避カーの別解以下のプログラムでも落下回避カーの動作が実現できます。
はじめ
DCモーターM1の速さを100にする
DCモーターM2の速さを100にする
DCモーターM1を逆転
DCモーターM2を逆転

赤外線フォトリフレクタのP0の値＜

No

Yes

DCモーターM1を正転

DCモーターM2を正転

1秒待つ

DCモーターM1を逆転

DCモーターM2を正転秒待つ

プログラムのつくり方は一つとは限りません。想定する動作が実現できればどのようなプログラムでも構いません。自分なりに考えてプログラムをつくることが
大切です。

57

５. ライントレースカーの製作
色によって赤外線の反射率が違うことを利用すると、赤外線フォトリフレクタで黒い線を認識することができます。
ライントレースとは、センサーに線を認識させて線に沿って車を走らせることを言います。

車は「4 落下回避カーの製作」で組み立てたものをそのまま使いましょう。

①入出力設定M1とM2にDCモーター、P0に赤外線フォトリフレクタとなるように選択しましょう。

58

②しきい値の決定
テストモードで黒い線があるときとないときの赤外線フォトリフレクタの値を下のイラストを使って確認して、しきい値を決めましょう。赤外線は黒い色に反射されにくいため、黒のときは値が小さく、白のときは値が大きくなります。

黒のとき

白のとき

0

100
黒のとき

しきい値

黒のとき

白のとき

白のとき

0

100
黒のとき

しきい値

黒のとき

白のとき

白のとき

0

100
黒のとき

しきい値

59

白のとき

③ライントレースカーの動作整理
黒い線に沿って走らせる方法の一つとして、黒い線の上ではなく、黒い線のふち（黒い線とまわりとの境界線）に沿って走らせるものがあります。

黒い線のふち

黒い線のふちに沿って走らせるには、例えば線の上にいるとき（黒色）と、そうでないとき（白色）で次のように DC モ
ーターを制御します。

線の上にいるとき（黒色）

そうでないとき（白色）

黒い線のふちに近づくように 右折する

黒い線のふちに近づくように左折する

この動きを繰り返すことで、線の上（黒色）とその外（白色）を行ったり来たりしながら線のふちに沿って走るように
なります。

60

この動きをまとめると、以下のようになります。
線の上にいるとき（黒色）

そうでないとき（白色）状態

赤外線フォトリフレクタ P0の値

条件

＜しきい値
右折する

左折する

DCモーター M1 を逆転

DCモーター M1 を停止

DCモーター M2 を停止

DCモーター M2 を逆転

動作
プログラム

左の条件以外のとき④フローチャート
整理した動作を実現できるように手順を考えてフローチャートをまとめましょう。今回はしきい値を超えるときと超えないときでそれぞれ違う動作をする必要があることに注意しましょう。

はじめ

DCモーターM1の速さを100にする

DCモーターM2の速さを100にする

No

赤外線フォトリフレクタのP0の値＜

Yes
DCモーターM1を逆転

DCモーターM1を停止

DCモーターM2を停止

DCモーターM2を逆転

61

⑤プログラミング
まとめたフローチャートをもとにプログラムを作成しましょう。
「制御」カテゴリーにあるしましょう。

を使うことに注意

を使うと、指定した条件が成り立つときと成り立たないときで処理を分けることができます。

条件を入れる

ライントレースカーの別解
以下のプログラムでもライントレースカーの動作が実現できます。
いるだけで、行っている処理はほとんど同じです。

62の代わりに、を２つ並べて63

応用学習 テーマ１
自動ゲートシステム＜学習内容＞●サーボモーターの制御●複数のセンサーによる制御

64

①「自動ゲート」の組み立て
①

②

③

④

BATT

P13

65

1. サーボモーターの動作確認
サーボモーターについて・プログラムで回る角度を決めて動かすモーターです。

空回りする・回る角度は０度から１８０度の間で指定します。
・手でゆっくり回したときに重たく感じる側がプログラムで動きます。
※無理やり回したり、はげしく動かしたりせずに、ゆっくりと手で回すようにしてください。

①入出力設定「編集」
より「入出力設定」を選択し、P13にサーボモーターを選択してください。

66

プログラムで動く③コンピュータとの通信
Windows/Mac の場合

USBケーブルによる通信②「編集」より接続を選択します。

①コンピューターとメインユニット（Studuino:bit）を USB ケーブルで接続します。

Android/iPad/Chromebookの場合①「編集」より接続を選択します。

Bluetoothによる通信②表示されるメッセージに従い、メインユニット（Studuino:bit) の B ボタンを押しながらリセットボタンを押してください。

③メインユニット（Studuino:bit) のLED に表示された点灯パターンと同じデバイスを選択してください。

RESET

右図のようなセンサーボードが表示されると、通信が正常に行われています。
Bluetoothによる通信時は通信ランプが青に点灯します。

通信ランプ

67

④サーボモーターの動作確認
サーボモーターを動かして、プログラムと動作の関係を調べましょう。サーボモーターの角度は、側面の刻印で確認することができます。

刻印

側面

サーボモーターのブロックをスクリプトエリアに並べましょう。電源をオンにして、サーボモーターの角度で変え、ゲートの位置とサーボモーターの角度の関係を調べましょう。

角度を変える

ゲートが閉じているときゲートが開いているとき

180 度

90 度

68

⑤プログラミング
サーボモーターが90度→180度と動くようにプログラムをつくりましょう。

サーボモーターを90度にする

1秒待つ

サーボモーターを180度にするのブロック２つを順番につなげ、下につなげたブロックの角度を180に変更します。

ブロックを

と

の間につなぎましょう。

つないだブロックをクリックしてプログラムを実行しましょう。
プログラムの実行中は実行されているブロックが白枠で囲われます。

プログラムが実行される流れ

このように上から順番にプログラムが処理されることを「順次処理」といいます。

69

2. 押しボタン式ゲートの製作
タッチセンサーを用いて、押しボタン式のゲートをつくりましょう。
ゲートを閉じる

タッチセンサーが押される

ゲートを開くゲートを閉じる

5 秒待つ①「押しボタン式自動ゲート」の組み立て
ゲートにタッチセンサーを取り付けた押しボタン式ゲートを組み立てましょう。
①

P0

70

②入出力設定
P0にタッチセンサーが追加されたので、P0に「タッチセンサー」
を選択しま

しょう。

③タッチセンサーの数値確認
センサーの情報は数値で表されます。コンピューターと通信させ、タッチセンサーが押されているときと押されていないときの数値の変化を「センサーボード」で確認しましょう。「センサーボード」はコンピューターとの通信中に表示され、センサーの値がリアルタイムで確認できます。

タッチセンサーがタッチセンサーが押されているときの数値

押されていないときの数値

01

タッチセンサーの数値は「調べる」カテゴリーので知ることができます。

また、をクリックすると、右の画像のようなメッセージ形式で現在の数値を知ることができます。

71

④ 動作の整理
動作とプログラムの関係を整理しましょう。

順 番

動 作

プログラム

ゲートを閉じる

サーボモーターP13を①

90度にする

タッチセンサーが押される②

タッチセンサーP0の値 ＝ ０

ゲートを開くサーボモーターP13を③

180度にする

５秒待つ

④

5秒待つ

ゲートを閉じる

サーボモーターP13を⑤

90度にする②〜⑤をずっと繰り返す72

⑤フローチャート
フローチャートで条件によって処理を分けることを表すときは以下の記号を使います。

条件

条件で処理を分ける

No

Yes

72ページで整理した動作を参考に、フローチャートをまとめましょう。

はじめ

サーボモーターP13を90度にする

タッチセンサーP0の

No

値＝0

Yes
サーボモーターP13を180度にする

5秒待つ

サーボモーターP13を90度にする

フローチャートに「終了」
が存在せずに繰り返しているのは、タッチセンサーが押されているかを常に確認するためです。

73⑥プログラム作成
条件はとを組み合わせてつくることができます。
数値を入力作成した条件は右図の各種制御ブロックの空欄に入れて使うことができます。
……………… 条件が成り立つときだけ、囲まれたプログラムが処理されます。

……………… 条件が成り立つときだけ、上段で囲まれたプログラムが処理され、条件が成り立たないときは、下段で囲まれたプログラムが処理されます。

……………… 条件が成り立つまで、次に続くプログラムを処理せずに待ちます。
……………… 条件が成り立つまで、囲まれたプログラムを繰り返し処理します。

押しボタンゲートのプログラム例74

「ずっと」のブロックを入れないとどうなるのか？
「ずっと」を入れない場合のフローチャートとプログラムは以下のようになります。

はじめ

サーボモーターP13を90度にする

タッチセンサーP0の値 ＝0

No

Yes

サーボモーターP13を180度にする

5秒待つ

サーボモーターP13を90度にする

このプログラムを動作させると、タッチセンサーを押しても全おわり

く反応しなくなります。これは、プログラムが非常に高速で処理されることで、プログラムを動作させた瞬間にプログラムが終了してしまうからです。「ずっと」のブロックを入れることプログラムが終了する

で、タッチセンサーの値を常に確認するようになるため想定通りの動作をするようになります。

はじめ

サーボモーターP13を90度にする

タッチセンサーP0の値 ＝0

No

Yes

サーボモーターP13を180度にする

5秒待つ

サーボモーターP13を90度にする

コンピューターはプログラム通りに動くので、思わぬ間違いで期待した動作と実際の動作が異なってしまうことがよくありまプログラムが終了しないす。フローチャートをまとめる段階で動作をよく考えることは間違いを避けることにつながります。

75押しボタン式ゲートの別解以下のようなプログラムでも押しボタン式ゲートの動作ができます。

はじめ

サーボモーターP13を0度にする

タッチセンサーP0の値 ＝0

NoYes
サーボモーターP13を90度にする

5秒待つ

プログラムのつくり方は一つとは限りません。想定する動作が実現できればどのようなプログラムでも構いません。自分なりに考えてプログラムをつくることが大切です。

76１. 自動ゲートの製作
赤外線フォトリフレクタを利用して自動ゲートをつくりましょう。

ゲートを閉じる

物を感知する

ゲートを開くゲートを閉じる

5秒待つ

基本的な動作の流れは以前につくった押しボタン式ゲートと同じですが、タッチセンサーの代わりに赤外線フォトリ
フレクタを使用します。

自動ドアの種類
身近なところで使われている自動ドアのセンサーには様々な方式があり、代表的なものに、タッチ方式と光反射方式があります。タッチ方式はタッチセンサーで実現でき、光反射方式は赤外線フォトリフレクタで実現することが
できます。

タッチ方式

光反射方式

ドアに取り付けられた

ドアの上に取り付けられたセンサーから出る

タッチスイッチを押すと開く

光を反射するものがあると開く

77

①「光反射方式自動ゲート」の組み立て
ゲートに赤外線フォトリフレクタを取り付けた自動ゲートを組み立てましょう。
①

P1②入出力設定P1 に赤外線フォトリフレ
クタが 追 加された の で、P1 に「赤外線フォトリフレ
クタ」
を選択しましょう。

78

③赤外線フォトリフレクタの数値確認
自動ゲートはゲートの前に人が立ったときにセンサーで感知してゲートを開きます。
この「感知」の役割を赤外線フォトリフレクタで行います。
コンピュータと接続し、通信中に表示される「センサーボード」で赤外線フォトリフレクタの値を確認しましょう。
下の図のように赤外線フォトリフレクタの前にブロックのあるときとないときで数値の変化を確認しましょう。
※赤外線フォトリフレクタの値は太陽光の影響を受けるため、日光のあたる窓に向けないようにしてください。

白いブロックを白いブロックを置いていないときの数値置いているときの数値④しきい値の決定
赤外線フォトリフレクタの値で白いブロックがないときとあるときを区別する場合は、２つの状態の境目となる値を決めて判断します。このような境目となる値のことを「しきい値」と言います。

しきい値

0

しきい値より小さければしきい値より大きければブロックがない

ブロックがある

100

しきい値の決定
しきい値を 1 や 3のように調べたどちらかの値の近くに決めてしまうと、赤外線フォトリフレクタの値がそ

こから少し変わるだけで、ブロックの有無を区別してしまいます。センサーの値は周りの環境によって変わりやす
いため誤って判断しないように、 2のように調べた２つの値の中央あたりをしきい値として決めましょう。

1

2

3

0

100

ブロックがないときの値ブロックがあるときの値

79

⑤フローチャート
76ページに示した動作を実現できるように手順を考えてフローチャートをまとめましょう。

基本的なフローチャートの構造は押しボタン式ゲートでつくったものと同じで、センサーをタッチセンサーから赤外線
フォトリフレクタに変更しただけです。条件の部分を決めたしきい値を利用して書き換えましょう。

はじめ

サーボモーターP13を90度にする

赤外線フォトリフレクタP1の値＞
Yes
サーボモーターP13を180度にする

5秒待つ

サーボモーターP13を90度にする

80

No

⑥プログラム作成
不等号のブロックを使うことに注意して、プログラムをつくりましょう。

自動ゲートの別解
以下のプログラムでも自動ゲートの動作が実現できます。

はじめ
サーボモーターP13を90度にする

赤外線フォトリフレクタP1の値

No

＞
Yes

サーボモーターP13を180度にする
5秒待つ

81

発展学習
ここでは、複数の条件による処理の分け方と、状態を保存する「変数」について学習します。
作成した自動ゲートの問題点を見つけ、どのようにしたら解決できるか考えましょう。

問題点の例

・人以外の物体や太陽光などにより赤外線フォトリフレクタが感知され、人がいないのにゲートが開くといった誤作動が起こる。
・ゲートが閉まるときに人が挟まる危険性がある。

解決策
ここでは、実際の自動ドアのしくみを元に問題解決のプログラム例を示します。

タッチ方式/光反射方式[タッチ方式/光反射方式併用タイプの解決方法]
誤作動防止：人がタッチスイッチを押さないと開かない。
安 全 対 策 ： センサーで人の有無を感知し、人がいる間はドアが閉まらない。
ドアが閉まる途中でも人を感知すると自動で開く。

82

タッチ方式の自動ドアの処理を参考に誤作動が起こらないようにタッチセンサーを押さな
いと開かないようにする。

ゲートを閉じる

タッチセンサーが押される

ゲートを開く

物を感知するとゲートが開く

ゲートが完全に閉まりきる前に物を感知したら、安全のために再度ゲートを開くようにする。

ゆっくり閉じる物を感知しなくなるまで待つ

安全のため、一度に 90 度まで動かさずに、
1 度ずつ動く処理を追加する。
ゲートが閉まるときは光反射方式の自動ドアの処理を参考にゲートに挟まらないように、
赤外線フォトリフレクタで人を感知したらゲートを開くようにする。

上記のように、ゲートの状態で処理を分ける必要があります。

ゲートが閉まっているとき（サーボモーターの角度が 90 度のとき）→ 物を感知しない。

ゲートが開いているとき（サーボモーターの角度が 90 度より大きいとき） → 物を感知する。

ゲートの状態（サーボモーターの角度）
によって処理を分ける場合は、「変数」
をつかって状態を記録させる必要があります。

83

① 変数の作成
変数カテゴリの「変数を作る」をクリックして表示されたウインドウで新しい変数名を指定して作成します。

指定できる変数名は半角英数字です。

作成した名前の変数が使用できるようになります。

変数のイメージ
仲間が確認できる

秘密の番号

ように箱に保存77

しておこう！

変数

変数は数字を入れて保存しておくことができる箱と考えることができます。箱に名前を付けておくことで色々なところで中身を取り出して確認することがで
きます。
77だね!

77ね!
77だ!

77

秘密の
番号

秘密の
番号

変数

77

変数

ひみつの
ばんごう

84

秘密の
番号
変数

なかまが確認77【変数とは…？】

できるように箱に保存しておこう！

77

サンプルプログラム①変数の初期値を 90 にします。

①②プログラム全体をずっとで囲みます。

②③③サーボモーターの角度の指定に変数をいれることで、変数で指定された値にサーボモーターの角度が変化します。

④⑤⑤ゲートが閉じているときの処理です。
タッチセンサーが押されると変数を180 にすることで、ゲートが開きます。
④変数の値が 90 のときと、90 でないときで条件を分⑥けることで、ゲートが閉じているか開いているかの状態で処理を分けることができます。
⑥ゲートが開いているときの処理です。
赤外線フォトリフレクタで物の有無を感知して処理を分けます。
感知していないとき（物がないとき）は、
変数を -1 ずつ変えることで、ゆっくり
ゲートが閉じられます。
の値を大きくするほどゆっ
くり閉じられます。

⑦

ゲートが完全に閉じる前に物を感知した
ときは、変数が 180 になり再びゲートが開きます。

⑦ ⑥の処理で変数が 90 より小さくならないようにする処理です。
変数が 90 より小さくなったら 90 にします。

85

応用学習 テーマ2

自動搬送システム＜学習内容＞
ロボットカーにサーボモー
ターをとりつけ、所定の位置までブロックを搬送する自動搬送システムを構想する。

※基本学習テーマ２と応用学習テーマ１を学習の上実施してください。

86無人搬送ロボット

ラピスセミコンダクタ宮城株式会社

工程内自動搬送システム

工場でつかわれているロボットは部品や商品を製造したり、検査するものだけではありません。製造につかわれる材料や製造された後の部品や商品を運ぶ「無人搬送ロボット」も活躍しています。

無人搬送ロボットは床に引かれた線を読み取って走行するものや、レールに沿って移動するものなど様々な種類があります。

http://www.lapis-semi.com/miyagi/info/factory/tecno/auto.html

無人搬送ロボットをつかうメリット
無人搬送ロボットを利用することで、作業の手間が省けるだけでなく、精密な電子部品を製造する工場では人を減らす
ことで、よりクリーンな環境を保ちやすくなります。

課 題
スタートラインからスタートしゴールの位置で停止してブロックを枠に落とす無人搬送ロボットを●仕様するパーツ
DCモーター×２………………… ロボットカーの制御
赤外線フォトリフレクタ×２……………ラインの検知
サーボモーター……………………搬送用アームの駆動製作しましょう。

作例はあくまで参考です。
サーボモーターの位置やセンサーの位置、プログラムも自由に考えて課題をクリアしましょう。

87

①組み立て
①

②

③

④

⑤

⑥ ×2

②

⑧

⑦
⑤

88

⑨

⑪

⑩
⑦

⑨

⑫

⑬

⑮

⑯

⑭

⑪

89

⑰

⑱

⑲

⑯

⑳

㉑

㉒
⑱

⑲

㉓

㉔
㉒

90

㉕

⑮

DCモーター（右）M2

サーボモーター

P13

BATT
DCモーター（左）M1

センサー（右）P1

センサー（左）P091

② 動作の整理
赤外線フォトリフレクタの条件とDCモーターの動作の関係を整理しましょう。
右側の赤外線フォトリフレクタだけが黒線の上にあるとき左側の赤外線フォトリフレクタだけが黒線の上にあるとき

①

②

条件

赤外線フォトリフレクタ P0の値＞しきい値
かつ
赤外線フォトリフレクタ P1の値＜しきい値

赤外線フォトリフレクタ P0の値＜しきい値

動作

右折する

左折する

DCモーター M1 を逆転

DCモーター M1 を停止

DCモーター M2 を停止

DCモーター M2 を逆転

両方の赤外線フォトリフレクタが黒線の上にないとき両方の赤外線フォトリフレクタが黒線の上にあるとき

状態

プログラム

かつ
赤外線フォトリフレクタ P1の値＞しきい値

③

④

条件

赤外線フォトリフレクタ P0の値＞しきい値
かつ
赤外線フォトリフレクタ P1の値＞しきい値

赤外線フォトリフレクタ P0の値＜しきい値

動作

直進する

停止する

DCモーター M1 を逆転

DCモーター M1 を停止

DCモーター M2 を逆転

DCモーター M2 を停止

状態

プログラム

かつ
赤外線フォトリフレクタ P1の値＜しきい値④の動作の後にサーボモーターを動かし、アームからブロックを落とす動作を追加します。

92

複数の条件を同時に満たす条件（論理積）を判定するには以下のブロックを使用します。

サンプルプログラム

DCモーターの速さを指定
サーボモーターの初期値を指定

状態①

状態②

状態③

状態④

アームを下ろしてブロックを落とす

93

発展学習 テーマ1

交通管制センター＜学習内容＞
信号機の制御が単独でおこなわれているわけではなく、様々な交通情報をもとにプロ
グラムや通信技術を用いて渋滞などの問題解決に利用されていることを理解する。

※基本学習テーマ１を学習の上実施してください。

94

交通管制センター
交通管制センターは、感知器など電子的に集めた交通情報（交通流、交通量など）をコンピューターで分析し、自動で信号機の制御を行ったり、監視カメラなどの他、警察官等により人的に集められた交通情報に基づき手動で信号機の制御を行なったりすることにより時間とともに変化する交通を適正に制御しています。他に、交通管制センターでは、集めた情報に基づき交通情報を交通情報板、ラジオ、カーナビゲーション等を通じてドライバー等に提供しています。

センサー

コンピューター

アクチュエータ道路を走る車の台数など

交通管制センターで信号機の点灯時間を変える

交通情報を分析などして渋滞をなくすを計測

交通管制センターの目的
交通渋滞の緩和：交通状況に応じて信号機や交通情報板を制御し、交通渋滞を緩和する。
交通事故の防止：交通の流れを円滑にし、追突やイライラ運転による事故を減少させる。
交通公害の防止：車の停止回数を少なくし、排気ガス、騒音などの交通公害を緩和する。
経済効果：

車の停止回数の減少によって車の走行時間が短縮され、燃料が節約でき輸送コストを抑える。

デバイス間通信メインユニット（Studuino:bit) 同士を無線（Wi-Fi）で通信させることができます。
以下のプログラムを作成して通信させてみましょう。

＜A/B ボタンを押して、他のメインユニットの LED の点灯・消灯を制御するプログラム＞

送信側のプログラム①無線のグループを設定します。

任意の値を入力②A ボタンを押したら「ON」という信号が送信されるプログラムを作成します。

A を選択

任意の文字列（ここでは ON）を入力

95

③同様に B ボタンを押したら「OFF」という信号が送信されるプログラムを作成します。

B を選択

OFF と入力

受信側のプログラム①無線のグループを設定します。

送信側のプログラムと同じ値を入力②無線で「ON」を受信したら LED を点灯させるプログラムを作成します。

ON と入力③同様に、無線で「OFF」を受信したら LED を消灯させるプログラムを作成します。
それぞれのプログラムを転送し、動きを確認しましょう。
プログラムが起動すると、送信側のボタンで受信側の LED の通信ランプが青色に点灯します。

点灯を制御できます。

OFF と入力96課題例
誰しも「車が全然来ないのに赤信号で止められている」という経験があるのではないでしょうか。多くの信号は一定間隔で赤と青が切り替わるようになっていますが、それによって無駄が生まれていることも確かです。
そんな問題点を解消するためのテクノロジーが、技術者たちによって開発されています。例えば、都心部の車通りの多い道路の信号は、運転者がまったく停車する必要のないよう信号が次から次へと青に変わります。

＜課題＞
3 台の信号機が変わるタイミングを 3 秒ずつずらして変わるように無線通信を利用したプログラムを考えましょう。

3 秒後

3 秒後

信号機１

信号機 2

97

信号機 3

プログラム作成例

信号機１

信号機２

信号機３

①
②
③

④

⑥

⑤

⑦

①信号機１〜３の無線グループを同じ値で設定します。
②信号機１は緑→黄→赤と変化する自動車用信号機のプログラムを繰り返し実行します。
③信号機１の緑が点灯したタイミングで「start1」という信号を送信します。
④信号機２は「start1」という信号を受信したのち、3 秒経過後に信号機１と同じ緑→黄→赤と変化する自動車用信号機のプログラムを実行します。
⑤信号機２の緑が点灯したタイミングで「start2」という信号を送信します。
⑥信号機３は「start2」という信号を受信したのち、3 秒経過後に信号機１と同じ緑→黄→赤と変化する自動車用信号機のプログラムを実行します。
⑦さらに多くの信号を連携させる場合は、③〜⑥と同様に「start3」「start4」と送受信ブロックを追加して無線で連携させることができます。

98

99

発展学習 テーマ2

高度道路交通システム＜学習内容＞
信号機の変化の情報を無線
で自動車に伝え、停止させる運転支援システムを構想する。

※基本学習テーマ１と基本学習テーマ２および、
発展学習テーマ１のデバイス間通信を学習の上実施してください。

100

高度道路交通システム
高度道路交通システムとは、最先端の情報通信技術
や制御技術を利用して、人と道路と自動車の間で情報の受発信を行い、運転操作の支援等を行うシステ
ムです。

信号情報活用運転支援システム

その1つとして「信号情報活用運転支援システム」が上げられます。
「信号情報活用運転支援システム」とは、簡単に説明すると「信号が変わるタイミングを教えてくれるシ
ステムのことです。
信号機が変わるタイミングを自動車が取得することで、直近の信号を青信号で通過できることをドライ
バーに伝達する（信号通過支援）、直近の信号が赤信号で停車する必要がある場合にドライバーに早めのアクセルオフを促す（赤信号減速支援）、ドライバーに信号が赤から青に変わる残り時間の情報を提示す
る（発進遅れ防止支援）といった活用がされ、安全性や燃費向上、渋滞防止の効果がもたらされています。

課題
信号機の変化に応じて自動車を制御する自動運転システムを作成しましょう。

繰り返し
青信号を５秒点灯

黄信号を１秒点灯

青信号情報を送信

黄信号情報を送信

走行停止

赤信号を５秒点灯

信号機の動作自動車の動作101

停止プログラム作成例

信号機

①
②

③

④

①自動車の無線グループを同じ番号で設定します。
②緑→黄→赤と変化する自動車用信号機のプログラムを繰り返し実行します。
③緑が点灯したタイミングで「go」という信号を送信します。
④黄が点灯したタイミングで「stop」という信号を送信します。

102

自動車
例①ロボットカーの応用

③

①
②

④

①信号機の無線グループを同じ番号で設定します。
②DC モーターの速さを設定します。
③「go」の信号を受信したとき、前進するプログラムを実行します。
④「stop」の信号を受信したとき、停止するプログラムを実行します。

例②ライントレースカーの応用

①

③

②

④

①信号機の無線グループを同じ番号で設定します。
②ライントレースカーのプログラムを実行します。（※DC モーターの速度指定はしません。）③「go」の信号を受信したとき、DC モーターの速さを 100 に設定します。
④「stop」の信号を受信したとき、DC モーターの速さを 0 に設定します。

103

発展学習 テーマ3
ETCシステム＜学習内容＞
自動ゲートが自動車の無線情報を検知して開閉を制御するETCシステムを構築する。

※基本学習テーマ２と応用学習テーマ１および、発展学習テ
ーマ１のデバイス間通信を学習の上、実施してください。

104

ETC システム

ETCシステム
路側アンテナETC システムとは電子料金収受システム（ Electronic Toll

Collection System ）の略称で、高度道路交通システムのひとつです。

有料道路を利用する際に料金所で停止することなく通過で双方向無線通信
車載器

きるため、渋滞緩和に役立っています。

ETC は、料金所のアンテナとクルマに装着した「車載器」との間で、通行料金に関する情報などを無線で交信します。

IC カード課題
自動ゲートとロボットカーを改良して ETC システムを再現しましょう。

情報送信

自動ゲート

ロボットカー105

① 動作の整理
ロボットカーの条件と ETC システムの動作を整理しましょう。

通常時（待機状態）

ETC 搭載車通過時

①

②

条件

赤外線フォトリフレクタ P1 の値＜しきい値
かつ

赤外線フォトリフレクタ P1 の値＞しきい値

動作

LED に × を表示・ゲートを閉じる

LED に←を表示・ゲートを開く

ETC 非搭載車通過時

手動で料金支払い時状態

かつロボットカーからの無線信号あり

ロボットカーからの無線信号なし

④

③
状態

条件

赤外線フォトリフレクタ P1 の値 ＞しきい値
かつ動作

LED に × を表示・ゲートを閉じる

ロボットカーからの無線信号なし

106

タッチセンサー P0 の値＝0
LED に←を表示・ゲートを開くプログラム作成例（衝突回避カー）◆ ロボットカー
衝突回避カーの応用

①
②

③

④

⑤

①自動ゲートの無線グループを同じ番号で設定します。
②DC モーターの速度を少し遅めで設定します。
③衝突回避カーのプログラムを実行します。
④ゲートを感知して止るタイミングで「etc」という信号を送信します。
⑤ゲートにぶつからないようにゲートを感知しなくなった後、少し時間を待ってから再度前進するように「○秒待つ」
ブロックを追加します。

107◆ 自動ゲート

⑧

①
②
③

④

⑤
⑥
⑦

①ロボットカーの無線グループを同じ番号で設定します。
②サーボモーターの角度を 80 度に設定します。
（ロボットカーの赤外線フォトリフレクタが感知できるように、ゲートを水平より少し下げます。）③LED で × 表示をします。
④タッチセンサーが押されたらゲートを開けるプログラムを実行します。
（手動で料金を支払ったときの動作。）⑤LED で←表示をします。
⑥赤外線フォトリフレクタで感知してロボットカーが通過するまで待ちます。
⑦ロボットカーがゲートに接触しないように、通過してから少し時間を待ってからゲートを閉じます。
⑧「etc」の信号を受信したときは、赤外線フォトリフレクタでロボットカーを感知した際に、タッチセンサーを押したときと同様のプログラムを自動で実行します。

108

109

付録
＜掲載内容＞●操作方法●ブロック一覧表

110

付録1

その他の操作方法◆ ブロックの複製
つながっているブロックを複製できます。つなげ
右クリックして複製たブロックの一部分だけ複製したい場合は、その部分を抜き出して同じ操作を行います。

ブロックが
複製される

◆ 取り消しスクリプトエリアで右クリックをして表示されるメニューから取り消しを押すことで、一つ前の状態に戻すことができます。
右クリックで表示◆ プログラムの保存方法①「ファイル」から「コンピューターに保存する」
を選択します。

111

付録 2

ブロック一覧表

テキストで使うブロックに関する使い方の一覧表です。

カテゴリ

使い方

ブロック

DCモーターの回転方向を指定する

DCモーターを停止させる

動き
DCモーターの速さを指定する

サーボモーターを指定した角度にする
指定した座標のLEDを点灯させる

指定した座標のLEDを消灯させる

指定した文字をスクロールで表示させる

見た目
全てのLEDの点灯色を個別に指定する

全てのLEDの点灯色を同時に指定する

全てのLEDを消灯させる

指定した高さの音を鳴らす

指定した高さの音を指定時間鳴らす音

ブザーからの音を止める

起動したときに下に組み込まれたプログラムを実行する

イベント

112

カテゴリ

使い方

ブロック

指定した秒数待つ囲われたプログラム指定回数くり返し実行する
囲われたプログラムをずっとくり返し実行する
囲われたプログラムを条件が満たされたとき実行する

制御

条件が満たされたとき上段のプログラムを実行し、満たされないとき下段のプログラムを実行する

条件が満たされるまで待つ
条件が満たされるまで囲われたプログラムをずっと実行する
本体のボタンの値を調べる
本体の光センサーの値を調べる
タッチセンサーの値を調べる

調べる
赤外線フォトリフレクタの値を調べる
本体のボタンが押されたときに下に組み込まれたプログラムを実行する

無線で文字列を送信する
無線で変数の値を送信する

無線

無線で文字列を受信したときに下に組み込まれたプログラムを実行する
無線のグループを設定する

113

カテゴリ

使い方

ブロック

「大なり」で値を比較する「小なり」で値を比較する

演算「等しい」で値を比較する
複数の条件を同時に満たす条件（論理積）を判定する
変数の値を調べる

変数

変数の値を指定した値に変える
変数に指定した値を加算する

下に組み込まれたプログラムを関数として定義する関数

関数
関数を呼び出す

114

082025115

K0821