情報の技術
スタンダードパッケージ

計測と制御編教員用

0. 問題を見いだし課題を設定する（計測・制御による問題解決）
中学校学習指導要領（平成29年告示）解説 技術・家庭編(p.53)より● 情報の技術の見方・考え方を働かせて、問題を見いだして課題を設定し解決する力を育成● 安全・適切なプログラムの制作、動作の確認及びデバッグ等ができるようにする● こうした活動を通して、自分なりの新しい考え方や捉え方によって、解決策を構想しようとする態度の育成● 自らの問題解決とその過程を振り返り、よりよいものとなるよう改善・修正しようとする態度の育成（中学校学習指導要領（平成29年告示）解説 技術・家庭編：p.19）
生活や社会における事象を、技術との関わりの視点で捉え、社会からの要求、安全性、環境負荷や経済性などに着目して技術を最適化すること。

（中学校学習指導要領（平成29年告示）解説 技術・家庭編：p.48）
生活や社会における事象を、情報の技術との関わりの視点で捉え、社会からの要求、使用時の安全性、システム、経済性、情報の倫理やセキュリティなどに着目し、情報の表現、記録、計算、通信の特性等にも配慮し、情報のデジタル化や処理の自動化、システム化による処理の方法等を最適化すること。

「（1）生活や社会を支える情報の技術」で気付いた技術の見方・考え方から、問題を見いだして、課題を設定する流れが大切になります。例えば、生活をサポートするロボットで考えてみましょう。
解決したい問題には、「大きい問題」と「小さい問題」があります。大きい問題は、根本的に計測・制御システムとして解決したい問題です。掃除の労力負担、企業などでの清掃要員の経費増大等といった問題です。小さい問題は、システムを構成する要素や機能を実現していく過程で、新たに発見される問題です。そのため「大きな問題」の解決のために「概念設計」という設計を行います。小学校でのプログラミング的思考を活かして、意図することを実現するためには、どのような機能が必要か、それらをどのように接続・連携させればよいのか、という全体構成を設計します。次に、それらの要素や機能を具体的にどのようにプログラミングするのかという設計を行います。これを「詳細設計」と言います。しかし、実際にはScratchのようなブロック言語は、それ自体が設計を図示しているくらいのわかりやすさがあるので、アクティビティ図などのUMLで流れを簡潔に整理して、すぐにプログラミングさせることも考えられます。

1

①前進するロボットを動かしてみて不便に感じた点（問題）から改善点（課題）を話し合わせましょう。生徒たちが最初に気づく問題は、「思いついた」ということが多いことでしょう。生徒のそうした「単なる思いつき」の発言であっても、それが技術の見方・考え方に照らして価値付けすることで、生徒たちは、「そうか、そのように考えればよいのか」という考え方を学びます。
「障害物にぶつかってしまう」という問題は、安全性に着目したから気づいたと言えます。
同じ結果を得られるのであれば、たくさんセンサーを付けるよりも1つのセンサーで実現した方が経済性が高いといえます。プログラムも無駄が多くて長いものでは、見にくくわかりにくいと保守・メンテナンス・改良もしにくいでしょう。多少極端ですが、無駄が多いことでディスクの使用領域をたくさん使ったり、通信するときのデータ量の増大につながれば経済性も悪くなるでしょう。
②その上で、この段階では、社会からの要求としてどのように動くことがまずは基本機能として必要なのかを考えさせます。次に、解決したい問題に対して、問題が生じる場面において、どのように状況が変化するのか、それをどのようにセンシング（計測）すればよいのか考えさせます。例えば、「手をかざしたらLEDをつけたい」という要求に対して、「手
かざしセンサー」というものは存在しません。手をかざすという状況によって、「影ができる」という現象を捉えるために「光センサー」が使えるのではないか、対象物との距離を計測できるセンサー（超音波センサー、赤外線フォトリフレクタ）を使えば、手をかざすことで手までの距離が変わることを利用できるのではないかという原理をもとにした計測への理解を深められます。
③そして、それによってどのように出力をコントロール（制御）すればよいのかを考えさせます。そのためには、どのよう「暗くなな処理が必要になるのかをイメージさせます。例えば、明るさセンサーを使って、常に明るさを調べておいて、ったら（明るさセンサーの値が、ある値よりも小さくなったら）、モーターを止めよう」のように、入力→処理→出力、という中での信号の流れがわかるようにしておくことが大切です。技術の見方・考え方で、求められる機能を課題として挙げさせましょう。
④生徒が設定した課題は、実際に生活や社会で実際に利用されている方法で解決することが必ずしも重要なのではな
く、目的に適したプログラミング言語を用いて、生徒自身がアイディアを出し、工夫し創造しながら問題を解決するプ
ロセスを大切にしましょう。
⑤その際、そもそもの目的を達成するために、複数のセンサーやアクチュエータ（LEDも含む）をどのように構成するのか、「システム」として全体を捉えさせるようにしましょう。
⑥本指導書では、情報の技術の見方・考え方を意識しながら、アクティビティ図や実際のプログラム例を示し、各機能をプログラミングする際のコツや、改良のヒントを紹介しています。参考例として、開隆堂の教科書で紹介されている実習例をもとに、次ページ目次のサンプルを扱っています。

2

目次
身近なプログラミング ……………………………………………………………6ページ

導 入
基本学習

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

テーマ１

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

応用学習

テーマ１

指導要領に則った課題解決実習を行います。

机の上の小さなゴミがある、技術室の床に金属の屑がある ………………31ページ
0. 組み立て ……………………………………………………………………32ページ● 技術の見方・考え方：社会からの要求
1. 直進だけでは回収範囲が狭い → 方向転換する機能 ……………………35ページ● 技術の見方・考え方：安全性の観点、システム
2. 物に触れても動き続ける → 接触検知機能 ………………………………37ページ
3. 机の端から落ちてしまう → 落下防止機能 ………………………………39ページ
4. 前方に壁があっても突っ込んでしまう → 壁の検知機能 ………………41ページ
テーマ2

就寝時などに、身の回りから離れた場所にある貴重品が盗まれたりしないかが心配 …43ページ
0. 組み立て ……………………………………………………………………44ページ● 技術の見方・考え方：社会からの要求
1. 人が常時監視することができない → 状況の変化を検知する機能 ……46ページ● 技術の見方・考え方：安全性の観点、システム
2. より確実に守りたい → 複数のセンサーを関連させて検知 ……………48ページ
サーボモーターを使用した作例の組み立て ……………………………50ページ
3. より確実に守りたい → 離れた場所にも通知 ……………………………52ページ
4. より確実に守りたい → 動きで通知 ………………………………………54ページ
テーマ3

運動不足解消のためのエクササイズを楽しく継続したい …………………56ページ
0. 組み立て ……………………………………………………………………57ページ● 技術の見方・考え方：社会からの要求
1. エクササイズを楽しみたい → ゲーミフィケーションの要素 …………59ページ● 技術の見方・考え方：システム
2. 色々なエクササイズをしたい → システムとして構成する ……………61ページ

3

注意事項
端末と接続状態でのご使用時
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
4作成上の注意
ロボットモードとキャラクターモードでは、プログラムの挙動や使用できる機能が異なります。
ロボットモード

キャラクターモード

使用できるスプライトはArtecRobo2.0のみ色々使用できる

Studuino:Bit本体にプログラムを転送（書き込み）して、パソコンとの常時USB有線接続

電池ボックスをつなげれば単体で動く

iPadの場合は常時Bluetoothでの接続

変数、リスト、ブロック定義に日本語は使用できない

制約無し

Pythonに変換したプログラムを見られる見られないイベントで「メッセージを送る」が使えない使える通信させたとき、負の数は送信できない

負の数も送信できる5

導入

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

6

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

例

エアコン

センサー

コンピュータアクチュエータ

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

センサー1で感知・計測した情コンピュータからの指令を受サー）
・温 感センサーで人の報を処理・判断する。それを元けてモーターの回転数を変え

位置や体温・室内の温度を計に温度や風力を設定しモーター

温度の調整をする。

測する。

へ指示を出す。

人感センサー

モーター

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

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

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

風呂給湯器

水量

給湯する / 給湯を止める

お掃除ロボ

壁や障害物の有無

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

7

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

例

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

起動スイッチが押される

設定温度を読み取る

現在の温度を計測する

繰り返す

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

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

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

8

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

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

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

ボタン

物体の有無を調べる

押されたことを調べる

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

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

DCモーター

サーボモーター

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

LEDライトブザー

電気を光に変える

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

9

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

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

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

言語の選択

メニュー

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

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

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

ブロック

つなぐ

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

ドラッグ＆ドロップ

ブロック
パレット

11

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

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

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

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

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

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

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

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

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

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

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

12

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

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

赤信号を５秒点灯

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

⋈

⋉

%$77

⋊

⋋

14

②コンピュータとの通信

Windows/Mac の場合

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

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

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

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

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

リセットボタンA ボタン

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

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

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

15

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

X0

1 2 3 4

0
Y

1
2
3
4

LED の座標は上図のとおり

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

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

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

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

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

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

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

16

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

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

ブロックを

と

の間につなぎましょう。

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

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

17

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

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

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

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

動作信号

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

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

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

くなるというメリットもあります。

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

プログラムの転送

動作信号

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

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

Android/iPad/Chromebook の場合

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

B ボタン③プログラムを転送する先を指定してください。
※0 〜 9 まで選択できます。

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

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

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

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

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

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

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

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

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

20

A ボタン

練習課題

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

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

青信号を５秒点灯

黄信号を１秒点灯

赤信号を５秒点灯

アクティビティ図

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

21

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

[5回繰り返してない]

プログラムの改造（繰り返し処理の追加）

青信号を点灯同じ動きを指定回数繰り返させたい場合は、「 ○回繰り返す」
ブロックを、ずっと繰り返させたい場合は「ずっと」ブロックを利用します。
下図のように自動車用信号機のプログラム全体を囲むように
または[5回繰り返した]

５秒待つ
青信号を消灯黄信号を点灯を追加してください。

１秒待つ
黄信号を消灯赤信号を点灯５秒待つ
赤信号を消灯「終了」がなくなり、繰り返し続けることは下のアクティビティ図のように矢印で表すこともできます。

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

終了しない

22

練習課題

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

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

青信号を５秒点灯

赤信号を５秒点灯

ずっと繰り返しアクティビティ図

青信号を点灯5 秒待つ[5回繰り返していない][5回繰り返した]

青信号を点灯赤信号を点灯

0.5 秒待つ

5 秒待つ

青信号を消灯

赤信号を消灯

0.5 秒待つ

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

23

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

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

ボタンが押されている

ボタンが押されていない

ときの数値

ときの数値

0

1

②プログラムの作成

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

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

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

24

③Ａボタンを押している間 LED が点灯するプログラム[A ボタンが押された（ボタン A=0）]

LED を全て消灯

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

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

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

「ずっと」のブロックを入れることで、A ボタンの値を常に確認するようになるため想定通りの動作をするようになります。

LED を全て消灯

LED を点灯動作させた瞬間にプログラ
ムが終了。
プログラム終了後に A ボタ
ンを押しても反応しない。

25

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

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

5 秒間待って赤信号を消灯

もしA ボタンが押されたらずっと繰り返しアクティビティ図

赤信号を点灯[ ボタンが押された（ボタン A=0)]

5 秒待つ
赤信号を消灯青信号を点灯5 秒待つ[5回繰り返していない][5回繰り返した]

青信号を点灯
0.5 秒待つ
青信号を消灯
0.5 秒待つ26

青信号を５秒点灯

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

発展学習①

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

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

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

ずっと繰り返しアクティビティ図

赤信号を点灯[ ボタンが押された（ボタン A=0)]

5 秒待つ
赤信号を消灯青信号を点灯

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

5 秒待つ[5回繰り返していない][5回繰り返した]

青信号を点灯
0.5 秒待つ
青信号を消灯
0.5 秒待つ27

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

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

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

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

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

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

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

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

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

1
1

2
2

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

28

2

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

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

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

クリック
関数

クリック

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

関数

29

に②で

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

光センサー

タと接続してください。

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

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

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

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

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

アクティビティ図

プログラム例LED を全て消灯[周囲が暗い（光センサー＜70）]

LED を赤で点灯
5 秒待つ

30

100

応用学習 テーマ１
金属回収ロボ＜学習内容＞
0. 組み立て技術の見方・考え方：社会からの要求

1. 直進だけでは回収範囲が狭い → 方向転換する機能技術の見方・考え方：安全性の観点、システム

2. 物に触れても動き続ける → 接触検知機能
3. 机の端から落ちてしまう → 落下防止機能
4. 前方に壁があっても突っ込んでしまう → 壁の検知機能

31

0. 金属回収ロボ
組み立て
⋇

⋈

⋉

⋊

⋋

⋌

⋎

⋏

⋇

⋍

⋍

⋊

32

⋐

⋑

⋒

⋓ ¼

⋔

⋕
⋑

⋒

⋖

⋗

33

⋘

0
3

3

%$77
3

0

ネオジム磁石の取り付け用意するもの：セロハンテープ

セロハンテープで固定する。

34

1.

直進だけでは回収範囲が狭い → 方向転換機能

プログラムについて問題

直進しかできない。

課題の設定

回転する（自分が中心にコマのように回る）、右左折する。

処理

左右のモーターの回転方向、モーターの動作時間設定。
（向けたい方向に向くために、何秒モーターを動作させれば良いか実験して調べる。）（電池の残量が十分にあるものとし、車輪が空転しない程度の床面との摩擦があるものとする。）

アクティビティ図例
回転する（自分が中心にコマのように回る）

右/左折する

右のモーターの速さを決める

右 / 左のモーターの速さを決める

左のモーターの速さを決める

右/左のモーターの回転（正転/反転）方向を決める

右のモーターの回転（正転/反転）方向を決める

モーターの動作時間を決める

左のモーターの回転（正転/反転）方向を決める

右 / 左のモーターの回転を止める

モーターの動作時間を決める
右のモーターの回転を止める
左のモーターの回転を止める

プログラム例（ロボットモード）
回転する（自分が中心にコマのように回る）

右/左折する35

方向転換機能のつくり方のコツ①編集→「入出力設定」で、M1、M2ともにDCモーターに設定変更します。

②ArtecRobo2.0のスプライトに対してプログラミングします。

③M1のモーターとM2のモーターを、左右どちらの車輪に設定するかで、モーターの正転/逆転が異なるので注意してください。
④方向転換するには、その場で回転するのか、向きを変えるのかの2つあるので目的に応じて処理を変えるようにしてください（弊社 計測・制御のプログラミングによる問題解決:p.38〜42 参照 右上のQRコードからもご確認いただけます）。
https://www.artec-kk.co.jp/dl/pfreetext/pdf/082025.pdf⑤本体には角度を検知する機能はないので、例えば90°回転させたい場合は、モーターを何秒動作させるか、つまりモーターを回転させたら、何秒待ってからモーターを止めるか事前に調べておく必要があります（待つ時間は、電池残量や床との摩擦、個体差等で微妙に変化します。「編集」→「モーター校正」でモーターの回転を調整することができます）。

このプログラムをさらに以下のように改良することもできます。
サンプルでは1つ1つの処理を書きましたが、1つのブロックで2つのモーターの動作を変更することもできます。
このブロックを使えば、2つのモーターの動作を同時に変更することができます。

36

2.

物に触れても動き続ける → 接触検知機能

プログラムについて問題

接触しているにも関わらず動こうとする。

課題の設定

タッチセンサー（スイッチ）を使用して、導通の状態を利用して検知する。

処理

導通しているかどうかを調べて条件分岐させる。

アクティビティ図例
接触したら停止する[タッチセンサーの値=0]

左のモーターの回転（正転 / 反転）方向を決める

左のモーターをブレーキありで止める

右のモーターの回転（正転 / 反転）方向を決める

右のモーターをブレーキありで止める

左のモーターの速さを決める
右のモーターの速さを決める

プログラム例（ロボットモード）
接触したら停止するプログラムのいくつかの例

①

③

②

④

タッチセンサーは通常状態は値が1で、導通状態（タッチした状態）で値が0になります。①は全て「もし」です
が、どちらかの状態だけに着目して「でなければ」にしたものが②です。

37

接触検知機能のつくり方のコツ①アーテックロボ2.0と接続し「編集」→「入出力設定」を選び、どのコネク
タに何のセンサーやアクチュエータを接続しているのかを設定します。P2では超音波センサーが使えないので注意してください。
②アーテックロボ2.0と接続し
「編集」
→
「接続」
をすることで、「センサー
ボード」を表示すると、接続されている現在の各種センサーの値をリア
ルタイムに知ることができます。
③タッチセンサーはタッチしている状態か否かの2種類の状態しかありません。それぞれの状態の時に値がどのようになっているのかを、実際に調べておきましょう。
④タッチセンサーは、導通しているかどうかで判別しているため、3端子のマイクロスイッチでも代替できます。

このプログラムをさらに以下のように改良することもできます。
プログラムを書いていると、機能ごとのまとまりに気が付くはずです。例えば、「 速さ100で前進」
させるためには、モーターの左右の回転方向を決めて、モーターの左右の速度を決めるという処理のまとまりがあります。
まとまりを見つけることができたら、そのまとまり毎に関数をつくって書くと、メインのプログラムをすっきりと見やす
くすることができます。見やすいプログラムは、エラーの発見にも役立ちます。

関数には引数（ひきすう）
を設定することで、上記の関数のスピードを変えることができます。下記では、speedという引数を追加して、速度を変化させられる関数をつくっています。ロボットモードでは関数名に日本語は使えません。

38

3.

机の端から落ちてしまう → 落下防止機能プログラムについて問題

前方の路面の状況（段差の大小、明暗）がわからない。

課題の設定

赤外線フォトリフレクタを使用して、赤外線の反射の状態を利用して検知する。

処理

赤外線フォトリフレクタの値を調べて条件分岐させる。
（段差や明るさが変化する状況を再現して実験し、しきい値を決める。）（赤外線フォトリフレクタは環境光の影響を受けるので、誤差も考慮しておく。）

アクティビティ図例
大きな段差を検知して停まる

しきい値を調べるツールのプログラム

リスト（Infrared）を全て削除する[赤外線フォトリフレクタの値<30]

左右のモーターの速さを決める
左右のモーターの回転（正転 / 反転）方向を決める

左右のモーターをブレーキありで止める[10回繰り返していない]

左右のモーターの速さを決める[10回繰り返した]

赤外線フォトリフレクタの値を Infrared に追加する

左右のモーターの回転（正転 / 反転）方向を決める

1 秒待つ
左右のモーターをブレーキありで止める

プログラム例（ロボットモード）
大きな段差を検知して停まる

しきい値を連続10回調べるツールのプログラム

しきい値を調べるツールのプログラムでは、「Infrared」（英語で赤外線という意味）というリストをつくって、1秒毎に赤外線フォトリフレクタの値を入れて数値を調べています。こうしてリストに入れたデータは、リストボックスの上で右クリックすると、データをダウンロードして他のアプリで再利用することができます。また1行に1つずつデータを書いたテキストファイルであれば、リストに読み込ませることもできます。

39

落下防止機能のつくり方のコツ①編集→「入出力設定」で、P0〜P2のどれかを赤外線フォトリフレクタに設定変更します。

②ArtecRobo2.0のスプライトに対してプログラミングします。

③調べたい個数分繰り返しの回数を設定し、実際に走行させ数値を調べてグラフを書きます。下のグラフはその例です。赤外線フォトリフレクタの値は細かい変動が多いので、こうしたグラフから誤差の影響を受けないしきい値を決定します。
赤外線フォトリフレクタの値

70
60
50
40
30
20
10
0

1

2

3

4

5

6

7

8

9

10

データ取得回数

このプログラムをさらに以下のように改良することもできます。
上記ではグラフを書いて大きく変化する箇所を目視で決定しましたが、よく見てみると段差がないときの値はほぼ60前後の値であることがわかります。そこで、段差がないときのデータで平均を求めて、そこから、例えば「その平均より5よりも大きい変化があったら」というプログラムを書けば、簡易的な自動学習機能をつくれます（余裕があれば、5などの固定の値ではなく、段差がないときのデータから標準偏差を使うアルゴリズムの方が確実です。数学との教科横断も考えられます）。
下記のプログラムはAボタンで平らな状態の10回の平均を「Flat̲value」に入れて、緑の旗が押されたら、その平均よりも5小さくなったら、大きな段差があると判断して停まるようになっています。

40

4.

前方に壁があっても突っ込んでしまう → 壁の検知機能

プログラムについて問題

前方の壁面の状況（障害物の有無）が分らない。

課題の設定

超音波センサーを使用して、超音波の反射の状態を利用して検知する。

処理

超音波センサーの値を調べて条件分岐させる。
（障害物との距離を再現して実験し、しきい値を決める。）

アクティビティ図例
前方の壁面を検知して停まる[ 超音波センサーの値 <10]

左右のモーターをブレーキありで止める
左右のモーターの速さを決める
左右のモーターの回転（正転 / 反転）方向を決める

プログラム例（ロボットモード）
前方壁面10cmを検知して停まる

超音波センサーでは「センサー値の設定」メニューより計測する値を距離か時間かを設定することができます。

41

衝突防止機能のつくり方のコツ「入出力設定」で、P0〜P1のどれかを超音波センサーに設定変更します(ver1.4.2時点)。
①編集→②ArtecRobo2.0のスプライトに対してプログラミングします。

③超音波センサーでは赤外線フォトリフレクタほど値の変動がありませんが、壁面の向きによって値が変わるので注意が必要です。下のグラフは実際の距離とセンサーの値2種類を計測した例です。

超音波センサーの特性

1500

20.0

1000

10.0

（cm）

500

時間（ミリ秒）0

計測された距離計測された時間︵ミリ秒︶

30.0

2000

0

5

10

15

20

25

30

0.0

実際の距離（cm）（要注意）このプログラムは、こうするとうまくいきません。
有線で接続し「緑の旗」
をクリックすると、障害物がしきい値よりも小さい距離に来ると止まるのですが、一定間隔で一瞬移動してしまいます。
「転送」
でプログラムを書き込んだ場合は、障害物が近づいても停止しません。

42

応用学習 テーマ２
自宅のセキュリティ対策＜学習内容＞
0. 組み立て技術の見方・考え方：社会からの要求

1. 人が常時監視することができない → 状況の変化を検知する機能
技術の見方・考え方：安全性の観点、システム

2. より確実に守りたい → 複数のセンサーを関連させて検知
3. より確実に守りたい ・サーボモーターを使用した作例の組み立て
3. より確実に守りたい → 離れた場所にも通知
4. より確実に守りたい → 動きで通知

43

0. 自宅のセキュリティ対策
組み立て
⋇

⋈

⋉

⋇

⋊

⋌

⋋
⋉

⋍

⋎

⋏

⋋

44

⋐

45

1.

人が常時監視することができない → 状況の変化を検知する機能

プログラムについて問題

人が常時監視できない場所に異常が生じても気が付けない。

課題の設定

異常の状態（揺れる）に反応するセンサーの値を調べて通知する。

処理

生じる異常の状態を検知できるセンサーを検討する。

しきい値を調整する。

アクティビティ図例
揺れを検知してLEDを点灯させる

LED を全て消灯[加速度(Z方向)の値<0.9]

LED を赤で点灯

LED を全て消灯

プログラム例（ロボットモード）
単一のセンサーを使った検知●今回は、LED面の方向に動いたことを検知するようしきい値を設定しています。

●加速度センサーは、移動した方向によって正負が異なるので、本体の向きなども注意してください。

46

状況の変化を検知する機能のつくり方のコツ
揺れを検知するとき、どの方向に動くのか、その時のセンサはどのような変化をするのかを調べます。

Y

Z

X

このプログラムをさらに以下のように改良することもできます。
先のサンプルでは一瞬の加速度で点灯して消灯します。確実に気がつく・見落とさないという確実性や安全性の観点では、一度点灯したら消えずに、そのまま点灯し続けた方がよい場合があります。下記はAボタンでリセットするまで点灯したままにする例です。

47

2.

より確実に守りたい → 複数のセンサーを関連させて検知プログラムについて問題

1つのセンサーだとそれ以外の変化が生じても気づけない。

課題の設定

意図的に状況が変化するように環境を工夫する（磁力を応用する）。

処理

マグネットを固定し、アーテックロボ2.0を可動部分に設置することで、アーテックロボ2.0とマグネットの距離が変化するように設置する。
方位を知るための地磁気センサーを利用して、周辺の磁力の変化を検知する。

アクティビティ図例
揺れと磁力の変化を検知してLEDを点灯させる

LED を全て消灯

LED を全て消灯[加速度(Z方向)の値<0.9]または[磁力(Z方向)の値<50][加速度(Z方向)の値<0.9]

LED を赤で点灯

LED を全て消灯

LED を赤で点灯

LED を全て消灯[磁力(Z方向)の値<50]

ブザーを鳴らす

ブザーを止める

プログラム例（ロボットモード）
複数のセンサーを使った検知

センサー毎にLED点灯とブザーの反応とを変える場合（左）。判別する条件式を「または」でつなげて、どちらかのセンサーが反応した場合にLED点灯させる場合（右）。
ジャイロセンサーも本体の向きや磁石の向き、位置関係によって値が大きく異なります。実際に設置する場所に合わせて閾値を適切に設定してください。

48

複数のセンサーを関連させて検知のつくり方のコツ①ここでは、単なる状況や状態変化だけでなく、変化する環境を意図的につくるようにしています。そこで今回使用するのがネオジム磁石です。写真の右側に見える丸いものがネオジム磁石です。
ドアノブにぶら下げたアーテックロボ
2.0との距離が変わることで、磁力の強さが変化することを検知します。
②加速度センサー同様に3軸あるため、磁石の向きやアーテックロボ2.0の向きによって値の変化の仕方が変わります。実際の取り付け環境で値の変化を実験して把握する必要があります。
③このサンプルでは、例としてZ軸の変化を用いるようにしています。

このプログラムをさらに以下のように改良することもできます。
サンプルでは2つのセンサーのどちらかが反応した場合に、LEDの点灯をしていますが、複数の条件が揃ったときに点灯することができます。複数の条件にあうようにするためには、
「かつ」
（AND）
という論理演算子を使います。Webの検索エンジ
ンで、スペースで区切って複数のキーワードを入れることと同じ概念です。
また、状態を保持するための変数を作成してセンサーの値によって、その変数の中身を1か0か切り替える書き方もあります。テキストプログラミング
では、こうした2つの状態しか保存しない変数はブーリアンといって、TrueかFalseかのみを扱うものが用意されていることが多いです。
また、以下は緑の旗がクリックされると、3つのプ
ログラムが同時に実行される並列処理になっています。これはスレッドと呼ばれるプログラミングテ
クニックです。プログラミングエディタでに切り替えると、thread（スレッド）という箇所があることで確認することができます。

49

2. より確実に守りたい
サーボモーターを使用した作例の組み立て
⋇

⋈

⋉

⋊

⋋

⋌

⋍

⋎

50

⋏

51

2.

より確実に守りたい → 離れた場所にも通知※ここでは、アーテックロボ2.0を2台使用します。

プログラムについて問題

その場にいないと通知を把握できない。

課題の設定

離れている場所に信号を送って、遠隔で通知を受信できるようにする。

処理

グループを決め、送信されたデータを色々な方法で表現する。

プログラム例（ロボットモード）

送信側
受信側
無線でのデータ送信は、以下のように書くこともできます。上記は合図を送るイメージなのに対して、下記は変数とその値を送るイメージです。
送信側２

受信側２

52

このプログラムをさらに以下のように改良することもできます。
キャラクターモードでつくると、ロボットモードとは違った方法でネットワークでの情報送
受信、画面への変化、音など多様なメディアを統合したプログラミングができます（情報の技術スタンダードパッケージ 双方向性のあるコンテンツ編 p.5参照）。キャラクター
モードでのネットワークを利用した通信では、通信したいArtecRobo2.0を同じネット
ワークグループに参加させます（「メニュー」→「編集」→「ネットワークに参加する」）。そうすることで、同じネットワークグループのプログラムでは、多少の遅延がありますが、リアルタイムに変数の値を共有することができます。ロボットモードとの違いは、無線のブロックがないことです。
送信側3（キャラクターモード）

受信側3（キャラクターモード）

ネットワーク上で送受信側で同じ名前となっている
isOpenedという変数の中身が共有される。
キャラクターモードではスプライトを複数使用できるので、以下のようにメッセージを送れば、録音した声や音楽ファイルなどの音源を使用することができます。送信側のプログラムは上記と同じです。さらに、拡張機能から「音声合成」
を追加すれば、パソコンのスピーカーで声を出力することができ、単なるアラート音に加えて、具体的な内容を伝えることができます。音しか聞こえない状況での安全性の機能として、
こうした音声でのアラートが役に立ちます。
送信側4

受信側4

（キャラクターモード）（キャラクターモード）「音」からAlert音を選択

53

拡張機能で音声合成を追加

2.

より確実に守りたい → 動きで通知※ここでは、アーテックロボ2.0を2台使用します。

プログラムについて問題

LEDが光るだけだと気がつきにくい。

課題の設定

サーボモーターで回転する角度を調整し、センサーがどの程度反応しているかを視覚的に把握しやすくする。

処理

DCモーターを使い回転の動力として使用する。

センサーの値によって、サーボモーターの角度を変える。

しきい値を超えたら、DCモーターを回転させる。

プログラム例（ロボットモード）
送信側

受信側

このサンプルでは、送信側は、1秒ごとに計測されたZ方向の磁力を送信することを基本機能としています。
（環境としては、磁石とArtecRobo2.0はドアが閉まっているときに最も値が小さく（負の数になるはずです）
なるように
セッティングしています）
ただし磁力の値は安定しにくく変化が大きいため、安定動作させるための工夫をしています。まずArtecRobo2.0と磁石との距離は環境次第なので、固定した値をプログラムに直接入れることができません。そのためアーテックロボ2.0のA
ボタンを押すことで、その時の磁気センサー（Z）の値をドアが閉じているときの値という意味で付けた「closed̲value」という変数に入れています。そして、ロボットモードでは負の数を送信できない（p.5参照）
ので、絶対値にして変数に代入しています。さらに、磁力の値は何もしなくても変動することがあるため、その変動幅をmarginという変数で、今回は仮に10としています。無線ネットワークで送信する値は、「mag」という変数名にしており、
この「mag」には、計測した磁気センサーの値に「closed̲value」と「margin」の値を足して、0に近い値を送信するようにしています。その後、無線で「Moved」という合図を送るという仕組みです。
受信側は、1秒ごとに送信される「mag」の値を元にして、ドアが開いたかどうかの」しきい値（今回は150）を決めています。今回は、サーボモーターを90度回転させているだけですが、サーボモーターに旗を付けたり、何かの家電製品のス
イッチを押させるなど分りやすく知らせる工夫をすることができます。

54

このプログラムをさらに以下のように改良することもできます。
今回のサンプルプログラムでは、磁気センサーの値が、ドアが閉まっているときは0に近く、大きくドアが開くほど（磁石とArtecRobo2.0の距離が大きくなるほど）
センサーの値が大きくなるようにセッティングしています。
その値の揺れ幅を調べ、ドアの実際の開き具合を確認しながら、3段階に処理を分けるようにしましょう。ほぼドアが閉まっていると考えられるときには、安全を示す青のLEDを点灯させ、かつサーボモーターの角度を0度の向きに設定しています。つぎに、
ドアが少し開いている状態は、magの値に幅を持たせるため、
「かつ
（AND）
」
でつないでいます。この時はLEDを黄色に点灯させ、サーボモーターを90度に動かし、視覚的な動きで注意喚起を促します。そして、ある値を超した場合は完全に開いた状態としています。
次のサンプルは、DCモーターの動作も用いて、ドアが大きく開いたときに連続した回転運動をさせています。これをプーリーにしたり、歯車の原動車として用いると、内容C エ
ネルギー変換の技術と統合させることができます。
そして下のプログラムは、p.54の応用で磁気センサーの値を1秒ごとに10回読み取り、その平均と標準偏差を求めるツールのプログラムです。数学との教科間連携やSTEM
教育的なアプローチになります。
Aボタンでデータを取得し、Bボタンで取得したデータの平均と標準偏差を計算しています。

55

応用学習 テーマ３
トレーニング補助装置＜学習内容＞
0. 組み立て技術の見方・考え方：社会からの要求

1. エクササイズを楽しみたい → ゲーミフィケーションの要素
技術の見方・考え方：安全性の観点、
システム

2. 色々なエクササイズをしたい → システムとして構成する

56

0. トレーニング補助装置
組み立て
⋇

⋈ ¼

⋉

⋇

⋊

⋌

⋋

%$77

⋍

⋎

57

トレーニング補助装置の体への取り付け例
用意するもの：輪ゴム×2、ゴムバンドやひもなど

作例

58

1.

エクササイズを楽しみたい → ゲーミフィケーションの要素

プログラムについて問題

自分の動作が客観的に把握できない。自分の動作が上達しているかわからない。

課題の設定

ゲーミフィケーションの要素を用いて、単調なことでも楽しめるようにする。

処理

身体の傾きや揺れが、どの程度理想的な状況かフィードバックさせる。

主観的に感じることを量で表せるようにする。

制限時間やしきい値を厳しくするなど難易度を上げるようにする。
無線通信を使用して友達と対戦できるようにする。

プログラム例（ロボットモード）
傾く毎にドットが移動

傾いている方向にドットが移動

大きく傾いたらゲームオーバーになる●大きく傾くことで、ドットが端に来たときに反応させる処理を末尾に追加しています。

●繰り返しを使って変数の値を変化させ、音とLEDの色を変えています。教科書（開隆堂：
p.215、東京書籍:p.202）の色のデジタル表現の原理を用いた工夫です。

●例えば体幹を鍛えるプランクのエクササイ
ズや両腕の水平伸ばしなどは、
こうしたプログラムでStuduio:bitを腕や腹筋に取り付けることで自分の身体の状態を把握することができます。

●ドットの移動が早すぎると体勢を変えるのに間に合わないため0.5秒待つようにしています（ プ ロ グ ラ ム は P C に 接 続した 状 態 とStuduio:bitに転送して実行すると実行速度が変わることがあるので、実際に試して調整
します）
。

59

タイマー機能
制限時間や経過時間を実現するには、タイマーブロックを使用します。プログラム実行時に自動的にタイマーが進みますの
で、計測を始めるタイミングで「タイマーをリセット」
して使います。
5秒耐えられたらクリアという目的で作成しています。クリアの表示例としてLEDを点灯させています。
しかし、クリアしてもドットが移動するプログラムが動いているため、ゲームクリアにもかかわらずゲームオーバー画面が出ることが考えられます。
それを回避するために、先のプログラムの一部分を下記のように変更します。

対戦機能
対戦をするためには、
２つのアーテックロボ2.0を無線接続する必要があります。この場合は２台とも同じプログラム
で構いませ ん 。同じ無 線グ ル ープをしていて、左下図 のようにゲームオーバーになったときに無線通信で「gameover」という文字列を送信するようにしておきます。先に「gameover」
を受信した方が負け、ということにしています。

このプログラムをさらに以下のように改良することもできます。
先のサンプルではLED表示の
みなので、身体の傾きや揺れを視覚的に把握することしかできませんでした。そのため、音のメ
ディアを使用して把握できるよ
うにするプログラムです。先のサンプルにこのプログラムを入れると、端に近づくと音の変化で把握できるようになります。

60

2.

色々なエクササイズをしたい → システムとして構成するプログラムについて
処理

制限時間内に、所定のエクササイズメニューを終えられるようなチャレンジ。

（エクササイズのメニュー毎に、負荷の大きさを変更できる。）（自分が何回やっているのか、回数が把握できるようにする。）（エクササイズで消費するカロリーの概算を表示する。）（制限時間は数字で出るのではなく、視覚的に時間経過と残り時間が把握できるようにする。）

プログラム例（キャラクターモード）

画面設計

使用しているスプライトと（1）スタート画面（2）説明（3）カウントダウン（4）実行画面

このスプライトはスタート画面を表示します。画面の表示設定を行っています。
ボタンであることを視覚的にわかりやすくするために、マウスポインタがスプライトに重なったら、押せることを示すフィードバックとして大きさを少し変化させるようにしています。
また、クリックされたことのフィードバックには、音を鳴らしています。
次の処理はエクササイズの説明なので、
「エクササ
イズ説明」
というメッセージを送り、「 Abby」と「風船」に受け取らせます。

このスプライトでは、エクササイズをどのように行うのかという説明と、消費カロリーの計算結果、所要時間を表示しています。
「ExNo」
は現在何番目のエクササイズを行っているかを示しています。

61

風船はタイマー代わりですが、変数やエクササイズメニュー、回数等の初期設定もしています。
アーテックロボ2.0のスプライトは、本体のセンサーの状況を検知して、回数を増やしたり、
正しくカウントされた時にそのことがエクサ
サイズ中でもわかるように音を鳴らしたりしています。
左のプログラムは、スクワットの例です。
このプログラムでは、内容をわかりやすくするためにしきい値を用いず、状態を示すブロックを使用しています。
もし〜なら、の中身を工夫して、LEDが上になってから、90度向きが変わったときに回数をカウントするようにしています。

カウントダウンはコスチュー
ムを切り替えています。

このプログラムをさらに以下のように改良することもできます。
キャラクターモードでは、アーテックロボ2.0本体はコンピュータとつながっている必要があります。パソコンであればUSBケーブル接続が必要です。iPad版であれば無線でのキャラクターモード動作が可能です。パソコンで作成し、Google Drive上のフォルダにプログラムを保存して、それをiPadで読むとよいでしょう。

62

041776

K0821