このテキストは小学生向けプログラミング教室の教材として作ったものを一部改変したものです。
追記)
2020.11.25にmicri:bit(v2.0)が日本でも発売されました。このページの記述はv1.5に基づいていますので、v2.0とは一部相違があります。
micro:bit(マイクロビット)プログラミング講座
A. micro:bit(マイクロビット)とは?
- イギリスのBBCが開発した学習用小型コンピュータ
- STEM(STEAM)教育に最適なものとして開発
- 持ち運べる(乾電池で動く),電子工作にも
- 2016年にイギリスの7年生(日本の中1)全員に100万台配布
- 現在日本でも2000円ほどで購入可能
特徴
- 加速度センサー
- 温度センサー
- 磁気センサー
- LED(25個)(明るさセンサーにも)
- ボタンスイッチ(2個)
- 音(スピーカーが必要)
- 無線、Bluetooth Low Energy(BLE)
- micro-USB
- I/O リング(3個)
- エッジコネクター(20ピン)
参考
- 加速度センサーの写真
(Bosch Working principle of an acceleration sensor - Youtube より)
プログラミング環境
- ブロック(MakeCode)
- JavaSript
- Python
- C/ C++
- Scratch/ Smalruby ほか
B. プログラミングを始めよう
(※ 巻末に「J. よくある質問」、「K. 困ったとき」を載せています)
A) 必要なもの
ここでは、パソコンを使ったやり方を説明していきます
- micro:bit本体
- パソコン(Windows10、macOS、Linuxなど、ブラウザが動くもの)
- ブラウザ(Google Chrome が推奨)
- USBケーブル(Type A - micro B)でデータ転送できるもの
※ 安いUSBケーブルだと、充電専用で、データ転送できないものがあるので注意!
- インターネット環境
あるといいもの
- micro:bit対応電池ボックス、乾電池(micro:bit単独で動かせる)
- 圧電スピーカー(音が鳴らせる)
- スピーカーのコードをmicro:bitに固定するもの:
「M3皿小ねじ×2、ナット×4、ワッシャー×2」
(あるいはバナナクリップなど)
- パソコンにBluetooth機能(SmalrubyやScratchと連動するときに必要)
B) MakeCodeでプログラミング
オンラインエディタ の「MakeCode for micro:bit」を使います
ブラウザ(Google Chrome推奨)で「microbit」と検索して、
→「Micro:bit Educational Foundation | micro:bit」
のページを開いて、
> ([microbit.org](https://microbit.org) より)
→「コーディングを学ぶ」の「Microsoft MakeCode」
をクリック
(microbit.org より)
→ micro:bit の MakeCode ホーム画面
C. 「チュートリアル」をやってみよう
まずは、ホーム画面の「チュートリアル」を順番にやってみましょう
(※ (応用)や「F. 組み合わせて作ってみよう」などの課題は、巻末にプログラミング例を載せています)
1. 「点滅するハート」
LEDでハートマークを点滅させよう
1-1. チュートリアルの進め方
→「ブロック」をクリック
> ([makecode.microbit.org](https://makecode.microbit.org/) より)→あとは、チュートリアルの説明通りに進めていきます
1-2. 完成形
1-3. 左側の「シミュレーター」で動きを確認しよう
左側が「シミュレーター」です。実物のmicro:bitを使わずに、プログラムの動きを確かめられます
1-4. micro:bitにプログラムをダウンロードしよう
※ 以下、Google Chrome(WebUSB対応ブラウザ)を使って説明していきます
(WebUSB非対応ブラウザの場合は、パソコンに一度ダウンロードしてから、micro:bitに書き込みます。やり方については、J.「K) プログラムをパソコンに保存したい」、「M) パソコンに保存したプログラムを直接 micro:bitに書き込みたい」を見てください。)
1)パソコンにUSBケーブルをつなぐ
2)ケーブルの反対側(micro-USB側)をmicro:bitにつなぐ
(※ ケーブルの上下の向きをよく確かめて!)
3)画面左下の「ダウンロード」の右の「…」をクリック
6)「BBC micro:bit CMSIS-DAP」を選んで(クリックして色をつけて)から、右下の「接続」をクリック
7)元の画面に戻るので、左下の「ダウンロード」をクリックすると、micro:bitに作ったプログラムが書き込まれます
(よく見ると、「ダウンロード」のアイコンがUSBに変わっています)
1-5. micro:bitで動きを確認しよう
プログラムが書き込まれると、自動的にプログラムが動き始めます。
1-6. プログラムを改造して、いろいろ試してみよう
プログラムをいろいろ改造して、シミュレーターで確かめて、いいと思ったら micro:bitに書き込んで実際に動かしてみましょう
micro:bitのプログラム作りは、この繰り返しです
※ わからない、うまくいかないことがある場合は、巻末の「J. よくある質問」、「K. 困ったとき」を見てみてください
2. 「名札」
自分の名前を英語で表示してみよう
3. 「スマイリーボタン」
ボタンを押すとニコニコマークを表示させてみよう
3-a. (応用) 「スマイリーボタン 2」
ボタンを押していない時は、LEDを消すには?
ヒント:「もし〜」を使って、ボタンが押されている/いないで場合分けします
4. 「サイコロ」
ゆさぶったら、数字が出るサイコロを作ろう
4-a. (応用)「サイコロ 2」
数字でなく ⚀ ⚁ ⚂ ⚃ ⚄ ⚅で表示しよう
ヒント:「変数」を使って、数字によって場合分けしてLEDを表示します
5. 「ラブメーター」
端子をさわったら、数字が表示されるようにしよう
(端子0とGNDを両手で触ります)
6. 「マイクロチャット」
micro:bit同士を無線でつないで通信してみよう
D. いろいろなセンサーの値を表示してみよう
センサーのブロックは、「入力」やその下の「その他」にあります
7. 「明るさ」を表示してみよう
7-a. LEDに表示
7-b. コンソールに表示
明るさをコンソールに表示してみよう
「高度なブロック」の中の「シリアル通信」のブロックを使いますmicro:bitにプログラムを書き込んだら、USBケーブルでパソコンとつながっているときに、シミュレーターの下にある「コンソール表示 デバイス」をクリックすると、実際の明るさがコンソールに表示されます。
8. 「温度」を表示してみよう
※ この温度は気温ではなく、micro:bitのCPUの温度を測っています。CPUの部品を指で温めると、温度が変わるのが分かると思います。
8-a. LEDに表示
温度をLEDに表示してみよう
8-b. コンソールに表示
温度をコンソールに表示してみよう
9. 「方角」を表示してみよう
※ 初回は、micro:bitの磁気センサーのキャリブレーション(調整)が必要です。
LED画面に「TILT TO FILL SCREEN」と表示されるので、LEDが全部点灯するまで、いろいろな方向に傾けます。
9-a. LEDに表示
9-b. コンソールに表示
9-c. (応用)「コンパス」を作ろう
北の方角を矢印がさすようにしよう
ヒント:方角の数字によって場合分けして、LED表示を変えます
10. 「傾き」を表示してみよう
傾きには「ピッチ」(前後方向)と「ロール」(左右方向)があります。
10-a. LEDに表示
10-b. コンソールに表示
11. 「加速度」を表示してみよう
加速度センサーは、micro:bitの動き(加速度)を表示してくれます。
また、micro:bitを動かさなくても地球の重力による重力加速度を常に受けています。そのため、micro:bitの向き(どちらが上か下か)も知ることができます。
micro:bitの加速度センサーは、3方向が測れるようになっています。
X方向はmicro:bitの左右方向(左側を上に置いたときプラス)、Y方向は上下方向(上側を上に置いたときプラス)、Z方向は表裏方向(LED面を上に置いたときマイナス)です。
X、Y、Zの3方向の加速度をコンソールに表示してみましょう。micro:bitの置く向きを変えたり、振って動かしたりして、数字の変化を見てみてください。
E. 音を出そう
micro:bitにスピーカーをつなげる必要があるので、ちょっと工作します。ここでは、市販の圧電スピーカーを使います。
スピーカーのコードをmicro:bitの端子に固定する方法はいろいろ考えられますが、ここでは「ねじ」と「ナット」を使う方法を説明します。
「M3皿小ねじ」と「ナット」をmicro:bitの「端子0」と「GND」にそれぞれ固定します。さらに、「ワッシャー」を入れた上に、もう1つの「ナット」をゆるく締めます。スピーカーのコードを「ワッシャー」と「ナット」の間に挟んで、きちんと「ナット」を締めると完成です。
道具を使わずとも指で締めるくらいで十分でしょう。
赤と黒のコードの場合、赤いコードを「端子0」に、黒いコードを「GND」につなぎます。
コードは逆につないでも、(音が逆位相になるだけで)音は鳴りますので、あまり気にしなくてもいいです。
12-a. 「ド」の音を出そう
12-b. 「ド、レ、ミ」と音を出そう
12-c. 「メロディー」を鳴らそう
F. 組み合わせて作ってみよう
○ ゆさぶる + LED表示
13. 「最初はグー、じゃんけん」
ホームの「チュートリアル」の下にある「ゲーム」の中から、 「最初はグー、じゃんけん」をやってみましょう
ゆさぶると、グー、チョキ、パーが表示されるようにしよう。作ったら、対戦してみよう
○ 明るさ + LED表示
14. 暗くなったら点灯
暗くなったら、LEDが光るようにしよう
○ 明るさ + 傾き + LED表示
15. micro:bitをめくると目を覚ます
伏せてあるmicro:bitをめくると、目を覚ましたようなLEDの表示をしてみよう
○ 加速度 + 音
16. ジャンプで音を出そう
ジャンプすると「ピコーン」と音が鳴るようにしよう
○ 傾き + 音
17. 音の高さを変化させよう
micro:bitを傾けると音の高さが変わるようにしよう
○ 傾き + LED表示
18. ボール転がし
micro:bitを傾けるとLEDのボールが転がるようにしよう
LED1つが光って、傾けるとそちらに動いていきます
19. ボール転がしゲーム
ゴールを作って、ボールを転がそう
もう1つLEDのゴールを作って、ボールが重なったらゴール!
G. 工作しよう
身近な材料を使ってmicro:bitと組み合わせた作品を作ろう
20. ころころサイコロ
円筒のプラ容器を転がすサイコロを作ろう
micro:bitに 4.で作った「サイコロ」プログラムを書き込んで、透明な円筒プラスチック容器に入れて、転がすサイコロにしてみます
電池ボックスを入れる場所を工夫すると、電池の重みでmicro:bitが上を向いたときに止まるようになります
「ゆさぶられたとき」を「画面が上になったとき」に変えてもいいかもしれません
H. 自由工作
micro:bitと工作を組み合わせて、自分の作品を作ろう
例)
- 3分タイマー(ひっくり返してスタート、時間で音が鳴る)
- エレキギター(傾きで音程が変わる)
- バースデーカード(開くとLED表示と音が鳴る)
- 引き出し監視アラーム(開くとLED表示と音が鳴る)
- 歩数計(加速度センサーで)
- サウンドヨーヨー(振り子)(傾きセンサーで音程が変わる)
- じゃんけん対戦(2台の無線でじゃんけんの判定)
- 接触アプリ or 忘れ物アラーム(2台の無線の距離で音が鳴る)
- ボールキャッチゲーム(落ちてくるLEDのボールを受け止める)
I. スペシャル:Smalruby(Scratch)と組み合わせてみよう
micro:bit は Smalruby(あるいは Scratch)と組み合わせて動かすことができます。
その仕組みは、micro:bitに専用プログラムを書き込んでおいて、パソコンで作ったSmalrubyのプログラムを無線(Bluetooth)で通信することで、micro:bitを動かすようになっています。
そのため、プログラムはSmalrubyで作ることになります。
※ パソコンにBluetoothが搭載されている必要があります。
準備
準備1) 「Scratch Link」をパソコンにインストールする
「Scratch Link」というパソコン用ソフトをダウンロードします。
https://scratch.mit.edu/microbit
から、ソフトをダウンロードしてパソコンにインストールします。
準備2) 「Scratch micro:bit HEX」をmicro:bitに書き込む
同じページから、「Scratch micro:bit HEX」をダウンロードします。
このソフトは、micro:bitに書き込みます。
micro:bitへの書き込み方は、「J. よくある質問」の「M) パソコンに保存したプログラムを直接 micro:bitに書き込みたい」を見てください。
準備3) 必要なものを起動しておく
- パソコンの「Scratch Link」を起動しておく
- パソコンの Bluetooth を有効にしておく
- micro:bit の電源を入れておく
準備4) パソコンでSmalruby3のオンラインエディタを開く
- Smalruby3 のオンラインエディタは、こちら↓
> ([smalruby.jp/smalruby3-gui](https://smalruby.jp/smalruby3-gui/) より)
- Scratch のオンラインエディタは、こちら↓
準備5) micro:bit拡張機能を追加する
オンラインエディタの左下角の青い (拡張機能)ボタンをクリックして、拡張機能の一覧から「micro:bit」を選びます。
準備6) Scratch Linkで接続する
下のようなパネル↓が出た場合は、前の手順に戻って確認してみてください。
準備7) micro:bitのメニューを確認
エディタに micro:bitの拡張機能がメニューに追加されています。
なお、メニューの右上角に緑の✅(チェックマーク)が表示されている時は、micro:bitと接続できています。
接続が切れた場合は、右上角のマークがオレンジの❗マークになります。その時は、❗マークをクリックして、再度接続してください。
21. ネコ1
(※ Smalruby(あるいはScratch)の詳しいプログラムの作り方は、それぞれのホームページを見てください)
micro:bitのAボタンとBボタンでネコが左右に動くようにしよう
22. ネコ2
micro:bitを傾けて、前後左右に動くようにしよう
23. ネコ3
ネコ2 よりスムーズに動くようにしよう
「もし〜」の中で、「〈前・後ろ・左・右〉に傾いたら」ブロックを使ってみます。
24. 魚と楽器ゲーム
ゲームキャラクタをmicro:bitでコントロールして、ゲームを作ろう
魚が泳いてきて、トランペットにぶつかると音が鳴る。トランペットはmicro:bitを前後に傾けると、画面を上下に動くようにします。
1)背景の画像を右下のステージから選びます
2)2つのキャラクターを右下の「ネコマーク」をクリックして選びます。
3)2つのキャラクターそれぞれにプログラムを書いていきます
※ キャラクターのアイコンをクリックすることで、そのキャラクターのプログラムが表示されます
J. よくある質問
A) micro:bitの左上の色がほかの人と違う
micro:bitの左上の色は青や赤、黄、緑など何種類かありますが、箱を開けてみないと分かりません。また、色は自分では選べません。
B) 電源を入れるには?
- パソコンにつながったUSBケーブルをつなぐ
- 電池ボックスをつなぐ(電池ボックスのスイッチをON)
上のどちらかで、電源が入ります。
C) 電源を切るには?
micro:bitに電源スイッチはありません。
電源を切るには、USBケーブルを抜いて、電池ボックスがあればそれもOFFにします。
D) 電源を切らないで、プログラムを再実行したい
micro:bitの裏面の「リセット」ボタンを押します。
E) 「ディスクの不正な取り出し」とパソコンに表示が出る
USBケーブルを抜いたときに、そのような警告が出ることがありますが、無視して大丈夫です。
F) 「プロジェクト」って何?
MakeCodeで作る「プログラム」のことを「プロジェクト」と言っています。なので、2つは同じ意味です。
G) 新しく自分でプログラムを作るには?
MakeCodeのホーム画面から「新しいプロジェクト」を選びます。
H) プログラムに名前をつけるには?
「新しいプロジェクト」を選んだときは、最初にパネルが出ます。ここに名前を入れます。
何も名前を入れないで「作成」ボタンを押すと、「題名未設定」という名前になります。
また、チュートリアルでは、あらかじめプログラムの名前が入っています。
I) プログラムの名前を変えるには?
「ダウンロード」ボタンの右側にプログラムの名前が入っています。ここで名前はいつでも変えることができます。
J) 前に作ったプログラムを見たい
MakeCodeのホーム画面の「マイプロジェクト」に、前に作ったプログラムが一覧になっています。(たくさんある場合は、「すべて表示」を押します。)
K) プログラムをパソコンに保存したい
「プログラムの名前」の右の「💾(保存)マーク」を押すと、プログラムはパソコンの「ダウンロード」フォルダに保存されます。(名前は、「microbit-○○○○.hex」のようになります。)
L) パソコンに保存したプログラムを開きたい
保存してあるプログラムを、MakeCode のプログラム作成画面にドラッグ&ドロップします。
他のプログラムを作成中の画面でもいいです。また、ホーム画面にいる時は、「新しいプロジェクト」や「マイプロジェクト」の中のどれかを選んでプログラム作成画面にします。
別のやり方としては、MakeCodeのホーム画面の「マイプロジェクト」の右端の「読取」ボタンをクリックして、「ファイルを読む…
パソコン上のファイルを開く」を選んで、読み込みたいプログラムを指定します。
M) パソコンに保存したプログラムを直接 micro:bitに書き込みたい
micro:bitのプログラムを、パソコンのエクスプローラーやFinderの左側、デスクトップなどに表示されている「micro:bit」アイコン上にドラッグ&ドロップします。
N) 自宅でもプログラムを作りたい
MakeCodeは、Windows10、macOS、Linuxなどの動くパソコンで、ブラウザ(Google Chrome が推奨)があれば使えます。
また、タブレット(iPadなど)やスマートフォン(iPhone、Android)でもブラウザを使うか、あるいは「micro:bit アプリ」をインストールすることで使えます。(プログラムの書き込みは USBケーブルではなく、Bluetoothを使います。)
K. 困ったとき
A) プログラムの書き込みが終わらない
ブラウザを「再読み込み」(左上の「↻」ボタン)をするとうまくいくことが多いです。
B) プログラムがmicro:bitに書き込まれず、パソコンにダウンロードされてしまう
ブラウザとmicro:bitの接続がうまくいっていません。もう一度、C.「1-4. micro:bit にプログラムをダウンロードしよう」の「デバイスを接続する」操作を行ってください。
C) 再度「デバイスを接続する」操作をしてもうまく行かない
一度、micro:bitとの接続を解除してみてください。
左上の「🔒(鍵)マーク」を押して、"BBC micro:bit CMSIS-DAP"の右の「×」ボタンを押してください。(micro:bit が複数あれば、すべて解除)
その後、再度 C.「1-4. micro:bit にプログラムをダウンロードしよう」の「デバイスを接続する」操作を行ってください。
D) やはり、micro:bitにプログラムが書き込めない
一度、パソコンに保存してあるプログラム(どれでもよい)を直接 micro:bitに書き込むと、直ることがあります。
やり方は、J.「M)「パソコンに保存したプログラムを直接 micro:bitに書き込みたい」を見てください。
E) パソコンからは書き込めるが、ブラウザからはプログラムが書き込めない
a) WebUSB機能に対応したブラウザを使ってください(Google Chrome が推奨)。
b) micro:bitのファームウェアのバージョンが古く、WebUSB機能に対応していない場合があります。(バージョン 0243以上が必要)
下記を参照して、ファームウェアのバージョンを確認して、必要なら最新のファームウェアにしてください。
→ ユーザーガイド ファームウェア - microbit.org
F) 一度もプログラムが書き込めない
見た目は同じですが、安いUSBケーブルだと充電専用で、データ転送できないものがあります。データ転送できるUSBケーブルに交換してみてください。
G) 英語なので日本語にしたい
Google Chromeの「このページを翻訳」を使います。
右上の(Google翻訳)ボタンを押して、「日本語」と「英語を常に翻訳」を選択します。
H) ブロックが英語のままで、日本語にならない
右上の「Microsoft」ロゴの左にある「⚙(歯車)マーク」を押して、「言語」をクリックすると、「言語を選択する」パネルが出るので、「日本語」を選択します。
L. ライセンス
本テキスト内の解説文、プログラムはともにパブリックドメイン
M. プログラム例
3-a. (応用) 「スマイリーボタン 2」
このプログラムでは、「ボタンA+B」を押した場合にうまく表示されません。なぜでしょうか?ボタンA+Bを押しても、先に「もしボタンAが押されているなら」の条件に当てはまるので、そのLEDが表示されてしまうのです。
では、プログラムを修正してみましょう。
やり方はいろいろありますが、ここでは先に「ボタンA+B」が押されているかを見ることにしました。
4-a. (応用)「サイコロ 2」
9-c. (応用)「コンパス」を作ろう
まず、北を向いたときだけ矢印が表示するプログラムを作ってみます。
方角を4等分すると、北の方角は0〜45°または 315〜360°になります。
次に、どの方向を向いても、矢印が表示されるようにします。
東の方角は45〜135°、南は135〜225°、西は225〜315°になります。
矢印はmicro:bitの向きを考えて作りましょう。
方角の判定がすべて不等号(> や <)なので、135°ぴったりなどの場合を考えて ≧ や ≦ も使ってください。
13. 「最初はグー、じゃんけん」
14. 暗くなったら点灯
明るさを判定する数字は各自調整してください。15. micro:bitをめくると目を覚ます
「起きている」表示も増やしてみます。角度の判定は、絶対値の方がうまくいくようです。
LED表示が長くなったので、関数を作ってまとめてみます。
16. ジャンプで音を出そう
ジャンプしたときに、加速度の数字がどう変わるかターミナルに表示してみます。
加速度の数字の変化を使って、ジャンプしたときの条件を作ります。
17. 音の高さを変化させよう
単純に傾きの角度の数字をそのまま使うと、音が低すぎました。 そこで、ドの音(262Hz)に傾きの角度を足すようにしてみました。 ボタンAを押すと、1オクターブ高くなる(周波数が2倍になる)ように、ボタンBを押すと、1オクターブ低くなるように(周波数が半分になる)ような機能を付け加えます。18. ボール転がし
前後に傾けると(ピッチが増えたり減ったりすると)、点灯する y位置が増えたり減ったりするようにします。
LEDが消えないでつながってしまうので、毎回LEDを消すようにします。
LEDの点灯がちらつくので、最初に消灯を入れてちらつきを抑えます。
左右に傾けると(ロールが増えたり減ったりすると)、点灯する x位置が増えたり減ったりするようにします。
前後左右の動きが滑らかでありません。
これは、一つの「もし〜」の中にピッチ(y位置)の判定も、ロール(x位置)の判定も入れてしまっているからです。
そこで、「もし〜」を2つ用意して、ピッチ(y位置)の判定と、ロール(x位置)の判定を別の「もし〜」でするようにします。
すぐLEDの範囲外に行ってしまうので、最小0、最大4の範囲に収めるようにします。
これで完成です!
19. ボール転がしゲーム
ボール転がしを発展させて、ゴールを作ります。
ボタンAを押すと、ゴールのLEDがランダムな位置に点灯するようにします。
ゴールのLEDとボールのLEDが同じ位置になったら、ゴールの表示をするようにします。
「もし〈真〉ならくりかえし〜」というブロックを使って、まとめてみます。
一応完成です!
ただ、ボタンAを押すたびにゴールのLEDが増えていってしまいます。どうしたらよいでしょうか?
また、他にも改造したいところがあれば、みなさんで直してみてください。