この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ch_microbit [2018/10/19 01:41] klab |
ch_microbit [2019/03/19 17:59] (現在) klab [ 通信端子の利用] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
# micro:bitを使ってみよう | # micro:bitを使ってみよう | ||
- | 25個のLEDや各種センサ、通信機能を持つデバイス「**micro:bit**」を使ってプログラムで操作してみよう。microbitのプログラミングは、ダウンロード版のドリトルのみ対応している。 | + | 25個のLEDや各種センサ、通信機能を持つデバイス「**micro:bit**」を使ってプログラムで操作してみよう。 |
- | ## microbitについて | + | ## micro:bitについて |
- | microbitは、イギリスのmicrobit教育財団が開発した教育用マイコンボードである。25個のLEDを使って文字列や数字の表現や、センサを使った各種計測ができる。また、外部デバイスを端子に接続し、モータなどのアクチュエータの制御なども行うことが可能である。 | + | micro:bitは、イギリスの公共放送局であるBBCが開発した教育用マイコンボードである。25個のLEDを使って文字列や数字の表現や、センサを使った各種計測ができる。また、外部デバイスを端子に接続し、モータなどのアクチュエータの制御なども行うことが可能である。 |
{{:pasted:microbit_img.jpg}} | {{:pasted:microbit_img.jpg}} | ||
ライン 11: | ライン 11: | ||
^部品名^説明^ | ^部品名^説明^ | ||
- | |ディスプレイ|25個のLEDをディスプレイと言う。それぞれのLEDを点灯・消灯することで文字や数字、絵を表現できる| | + | |LED|25個のLEDを点灯・消灯することで文字や数字、絵を表現できる| |
+ | |ボタン|ボタンの状態を計測できる| | ||
|光センサ|周辺の明るさを計測できる| | |光センサ|周辺の明るさを計測できる| | ||
|温度センサ|周辺の温度を計測できる| | |温度センサ|周辺の温度を計測できる| | ||
|加速度センサ|加速度を計測できる。傾きや落下などの動きを検出できる| | |加速度センサ|加速度を計測できる。傾きや落下などの動きを検出できる| | ||
- | |コンパス|磁気を計測できるため、方角の判断ができる| | + | |コンパス|地磁気を計測し、計測値から方角の判別ができる| |
|端子|センサやモータなどの外部デバイスの入出力ができる| | |端子|センサやモータなどの外部デバイスの入出力ができる| | ||
## ドリトルとmicrobitの導入手順 | ## ドリトルとmicrobitの導入手順 | ||
- | Windowsが導入されたコンピュータでドリトルとプロッチを通信するには、以下の設定をおこなう。このとき、プログラムのコンパイル環境のインストールを行うため、OSの管理者権限が必要となる場合がある。 | + | Windowsが導入されたコンピュータでドリトルとmicrobitを通信するには、以下の設定をおこなう。このとき、プログラムのコンパイル環境のインストールを行うため、OSの管理者権限が必要となる場合がある。 |
- | + | - **ドリトルをインストールする** | |
- | - ドリトルをインストールする | + | * ドリトルのサイト(http://dolittle.eplang.jp)のダウンロードから最新版のWindows用のドリトルをダウンロードして任意のフォルダに展開する。(「C:」直下が好ましい) |
- | * ドリトルのサイト(http://dolittle.eplang.jp)のダウンロードから最新版のwindows用のドリトルをダウンロードし任意のフォルダに展開する。(可能であれば、「C:」直下に入れる((「デスクトップ」や「ドキュメント」のフォルダ上は避けてください)) | + | - **microbitの追加パッケージをダウンロードする** |
- | - microbit用のセットアップファイルを実行する | + | *ダウンロードから追加パッケージ「microbit制御ライブラリ」をダウンロードし、ファイルを解凍する。 |
- | * 「dolittle**win((**はその時のバージョンによって異なります。))」フォルダ内の「microbit」フォルダを開く | + | *「microbit」フォルダ内のファイル(iniファイル,exeファイル等)を、ドリトルのルートフォルダ(dolittle.jarやdolittle.batが置いてあるフォルダ)に上書き保存する。 |
- | * フォルダ内にあるsetup.batを実行する。(セットアップが開始します。完了までに数分間かかる場合があります。) | + | - **microbitのプログラミング環境をインストールする** |
- | - ドリトルの起動 | + | * microbit_setup.batを実行する。(インストール画面に、ファイルがありませんと表示する可能性があります。) |
+ | * 「なにかキーを入力してください」が表示した場合、「Enter」などのキーを入力する(キーを入力するとcmd.exeが閉じます。) | ||
+ | - **ドリトルの起動** | ||
* エクスプローラからdolittle.batを実行する。 | * エクスプローラからdolittle.batを実行する。 | ||
ライン 37: | ライン 40: | ||
最初に実行=「 | 最初に実行=「 | ||
- | ディスプレイ!321 表示。 | + | LED!321 表示。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | ディスプレイ!"hello"表示。 | + | LED!"hello"表示。 |
」。 | 」。 | ||
mb!転送。 | mb!転送。 | ||
ライン 74: | ライン 77: | ||
## 文字を表示してみよう | ## 文字を表示してみよう | ||
- | microbitは25個のLEDを使うことで文字や数字を表示できる。25個のLEDに相当するオブジェクト「**ディスプレイ**」を使い、**表示**や**スクロール表示**を使うことで文字を表示できる。 | + | microbitは25個のLEDを使うことで文字や数字を表示できる。25個のLEDに相当するオブジェクト「**LED**」を使い、**表示**や**スクロール表示**を使うことで文字を表示できる。 |
- | + | ||
- | + | ||
- | **ディスプレイオブジェクトの命令一覧** | + | |
- | ^命令^説明^ | + | |
- | |表示|25個のLEDで英数字を表示できる。点灯する箇所を指定することもできる| | + | |
- | |スクロール表示|表示できる内容は表示命令と同じ。表示する際に左にスクロールしながら表示していく| | + | |
- | |クリア|LEDをすべて消灯する| | + | |
<code> | <code> | ||
システム!"microbit"使う。 | システム!"microbit"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | あ | + | LED!321 表示。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | あ | + | LED!"end"スクロール表示。 |
」。 | 」。 | ||
mb!転送。 | mb!転送。 | ||
</code> | </code> | ||
+ | |||
+ | 上記のプログラムでは、最初に一度だけ実行する「最初に実行」のブロックの中に数字の「321」を表示する命令を書いている。何度も繰り返す「繰り返し実行」のブロックの中には、文字の「end」を左から右にスクロールする命令を書いている。文字は「" "」で囲む必要がある。 | ||
+ | |||
+ | **LEDオブジェクトの命令一覧** | ||
+ | ^命令^説明^ | ||
+ | |表示|25個のLEDで英数字を表示できる。点灯する箇所を指定することもできる| | ||
+ | |スクロール表示|表示できる内容は表示命令と同じ。表示する際に左にスクロールしながら表示していく| | ||
+ | |クリア|LEDをすべて消灯する| | ||
+ | |||
## 絵を表示してみよう | ## 絵を表示してみよう | ||
- | ディスプレイでは、各々のLEDを点灯させるか消灯させるかを指定することで絵を表示することが可能である。**表示**や**スクロール表示**の引数に1と0を組み合わせた25の数字を指定する。LEDの点灯は「1」、消灯は「0」である。数字と数字の間にはスペースが必要である。 | + | LEDでは、各々のLEDを点灯させるか消灯させるかを指定することで絵を表示することが可能である。**表示**や**スクロール表示**の引数に1と0を組み合わせた25の数字を指定する。LEDの点灯は「1」、消灯は「0」である。数字と数字の間にはスペースが必要である。 |
<code> | <code> | ||
システム!"microbit"使う。 | システム!"microbit"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | ディスプレイ!1 0 1 0 1 | + | LED!1 0 1 0 1 |
- | 1 0 1 0 1 | + | 1 0 1 0 1 |
- | 1 0 1 0 1 | + | 1 0 1 0 1 |
- | 1 0 1 0 1 | + | 1 0 1 0 1 |
- | 1 0 1 0 1 表示。 | + | 1 0 1 0 1 表示。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | ディスプレイ!0 0 0 0 0 | + | LED!0 0 0 0 0 |
- | 0 0 0 0 0 | + | 0 0 0 0 0 |
- | 0 0 1 0 0 | + | 0 0 1 0 0 |
- | 0 0 0 0 0 | + | 0 0 0 0 0 |
- | 0 0 0 0 0 スクロール表示。 | + | 0 0 0 0 0 スクロール表示。 |
」。 | 」。 | ||
mb!転送。 | mb!転送。 | ||
ライン 120: | ライン 125: | ||
{{:pasted:microbit-_.png}} | {{:pasted:microbit-_.png}} | ||
- | 以降、ディスプレイの点が左から右に流れるように動く。\\ | + | 以降、 LEdの点が左から右に流れるように動く。\\ |
{{:pasted:microbit-ten.png}} | {{:pasted:microbit-ten.png}} | ||
## ボタンを使ってみよう | ## ボタンを使ってみよう | ||
- | microbitに搭載しているボタンを使ってみる。ボタンの**押されている?**を使うことで、ボタンが押された時に動作するプログラムの作成が可能である。microbitには「A」ボタンと「B」ボタンがある。それぞれ、**ボタンA**オブジェクトと**ボタンB**オブジェクトがあり、またAとBの両方を示す**ボタンAB**オブジェクトも準備している。\\ | + | microbitに搭載しているボタンを使ってみる。ボタンの**押された?**を使うことで、ボタンが押された時に動作するプログラムの作成が可能である。microbitには「A」ボタンと「B」ボタンがある。それぞれ、**ボタンA**オブジェクトと**ボタンB**オブジェクトがあり、またAとBの両方を示す**ボタンAB**オブジェクトも準備している。\\ |
ここでは、ボタンを押した時に文字を表示するプログラムを作成してみる。ボタンを使ったプログラムの場合、条件分岐の記述を行う必要がある。ドリトルでは、IF文に相当する「**!なら**」を使うことで条件分岐のプログラムを作ることができる((条件分岐のプログラムの書き方に関しては、(https://dolittle.eplang.jp/ref_basic)のページの真偽値の部分を参照してください。))。 | ここでは、ボタンを押した時に文字を表示するプログラムを作成してみる。ボタンを使ったプログラムの場合、条件分岐の記述を行う必要がある。ドリトルでは、IF文に相当する「**!なら**」を使うことで条件分岐のプログラムを作ることができる((条件分岐のプログラムの書き方に関しては、(https://dolittle.eplang.jp/ref_basic)のページの真偽値の部分を参照してください。))。 | ||
ライン 131: | ライン 136: | ||
システム!"microbit"使う。 | システム!"microbit"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | ディスプレイ!クリア。 | + | LED!クリア。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 「ボタンA!押されている?」!なら「 | + | 「(ボタンA!押された?)==はい」!なら「 |
- | ディスプレイ!"A"表示。 | + | LED!"A"表示。 |
」実行。 | 」実行。 | ||
- | 「ボタンB!押されている?」!なら「 | + | 「(ボタンB!押された?)==はい」!なら「 |
- | ディスプレイ!"B"表示。 | + | LED!"B"表示。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
ライン 150: | ライン 155: | ||
ボタンBを押したときはディスプレイに「B」を表示する。\\ | ボタンBを押したときはディスプレイに「B」を表示する。\\ | ||
+ | {{:pasted:microbit-b.png}} | ||
+ | ## 光センサ | ||
+ | microbitに搭載している光センサを使ってみる。光センサの**明るさ?**を使うことで、周辺の明るさの変化に合わせて動作するプログラムの作成が可能である。\\ | ||
+ | ここでは、周辺が明るい場合に文字を表示するプログラムを作成してみる。 | ||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | LED!クリア。 | ||
+ | 」。 | ||
- | ## | + | 繰り返し実行=「 |
+ | 「(光センサ!明るさ?)>100」!なら「 | ||
+ | LED!"A"表示。 | ||
+ | 」そうでなければ「 | ||
+ | LED!クリア。 | ||
+ | 」実行。 | ||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> | ||
+ | |||
+ | ## 加速度センサ | ||
+ | microbitに搭載している加速度センサを使ってみる。microbitには3軸加速度センサが搭載している。**上下加速度?**、**左右加速度?**、**前後加速度?**を使うことで、x軸、y軸、z軸の加速度の計測が可能である。また、**横の傾き?**、**縦の傾き?**を使うことで、前後左右の傾きを計測できる。\\ | ||
+ | ここでは、microbitの横の傾きを計測し、右に傾いている場合に、「→」を表示するプログラムを作成してみる。 | ||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | LED!クリア。 | ||
+ | 」。 | ||
+ | |||
+ | 繰り返し実行=「 | ||
+ | 「(加速度センサ!横の傾き?)>0」!なら「 | ||
+ | LED!0 0 1 0 0 | ||
+ | 0 0 0 1 0 | ||
+ | 1 1 1 1 1 | ||
+ | 0 0 0 1 0 | ||
+ | 0 0 1 0 0 表示。 | ||
+ | 」実行。 | ||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> | ||
+ | |||
+ | ## 地磁気センサ | ||
+ | microbitに搭載している地磁気センサを使ってみる。**磁力**を使うことで周辺の磁力を計測が可能である。また、**角度?**を使うことで方位磁石としての利用も可能になる。コンパスで角度を計測する場合は、自動的にキャリブレーションが実行される。\\ | ||
+ | ここでは、ボタンAを押した際に、コンパスで計測した方角をLEDに表示している。 | ||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | LED!クリア。 | ||
+ | 」。 | ||
+ | |||
+ | 繰り返し実行=「 | ||
+ | 「(ボタンA!押された?)==はい」!なら「 | ||
+ | LED!(コンパス!角度?)表示。 | ||
+ | 」実行。 | ||
+ | |||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> | ||
+ | |||
+ | ## 温度センサ | ||
+ | microbitに搭載している温度センサを使ってみる。**温度?**を使うことで、摂氏で温度の計測が可能である。\\ | ||
+ | ここでは、ボタンAを押した際に、周辺の温度を計測し、LEDに表示している。 | ||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | LED!クリア。 | ||
+ | 」。 | ||
+ | |||
+ | 繰り返し実行=「 | ||
+ | 「(ボタンA!押された?)==はい」!なら「 | ||
+ | LED!(温度センサ!温度?)表示。 | ||
+ | 」実行。 | ||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ## microbitで無線通信をしてみよう | ||
+ | ドリトルでは無線のオブジェクトである「**無線**」を使い、「**送信**」や「**受信**」の命令を使って文字の交換やセンサの計測値の送受信が可能である。無線で送受信する機器間の設定は「**グループ**」の命令を使い、通信するグループを0〜255の間で設定することで同じグループ間で無線通信することが可能になる。 | ||
+ | |||
+ | **文字列の送受信**\\ | ||
+ | 次のプログラムでは、**グループ**の命令で0番に設定したmicrobitに「hello」を送信している。また、別のmicrobitからの送信データをLEDで表示している。 | ||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | 無線!0 グループ。 | ||
+ | 」。 | ||
+ | 繰り返し実行=「 | ||
+ | 無線!"hello" 送信。 | ||
+ | 」。 | ||
+ | 無線が受信したとき=「 | ||
+ | LED!(無線!受信) 表示。 | ||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **光センサの計測値の無線通信**\\ | ||
+ | 次のプログラムでは、**グループ**の命令で0番に設定したmicrobitにボタンAを押したときに光センサの計測値を送信している。また、別のmicrobitからの送信データを数字の形式で取得しLEDに表示している。(文字が送られてきた場合に、数値受信を実行すると数字で表示されます。) | ||
+ | |||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | 無線!0 グループ。 | ||
+ | 」。 | ||
+ | 繰り返し実行=「 | ||
+ | LED!(無線!数値受信) 表示。 | ||
+ | 」。 | ||
+ | ボタンAが押されたとき=「 | ||
+ | 無線!(光センサ!明るさ?) 送信。 | ||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | **加速度センサの計測値の無線通信**\\ | ||
+ | 次のプログラムでは、**グループ**の命令で0番に設定したmicrobitにボタンAを押したときにmicrobitの傾きを送信している。また、別のmicrobitからの送信データを数字の形式で取得しLEDに表示している。(文字が送られてきた場合に、数値受信を実行すると数字で表示されます。) | ||
+ | <code> | ||
+ | システム!"microbit"使う。 | ||
+ | 最初に実行=「 | ||
+ | 無線!0 グループ。 | ||
+ | 」。 | ||
+ | 繰り返し実行=「 | ||
+ | 無線!(加速度センサ!横の傾き?) 送信。 | ||
+ | 」。 | ||
+ | 無線が受信したとき=「 | ||
+ | LED!(無線!数値受信) 表示。 | ||
+ | 」。 | ||
+ | mb!転送。 | ||
+ | </code> |