micro:bit をキノコbit専用コントローラーにする

micro:bit に「キノコbit専用コントローラー」を書き込むと、傾きやボタンでゲームを操作できます。 MakeCode(JavaScript) と MicroPython(Python) のどちらでもOK。好きな言語を選んでください。

usb-controller (MakeCode JavaScript)
serial.setBaudRate(BaudRate.BaudRate115200)

// ボタン:A=ダッシュ、B=スプラッシュ
input.onButtonPressed(Button.A, function () {
    serial.writeLine("A")
})
input.onButtonPressed(Button.B, function () {
    serial.writeLine("B")
})

// P0タッチ(ワニクリップ):さわった/はなしたを送る。v2ではP0は「さわるだけ」で反応(導電クイズで使う)
input.onPinPressed(TouchPin.P0, function () {
    serial.writeLine("T1")
})
input.onPinReleased(TouchPin.P0, function () {
    serial.writeLine("T0")
})

// 傾き(加速度 x, y)を "120,-40" の形で送りつづける
basic.forever(function () {
    serial.writeLine(input.acceleration(Dimension.X) + "," + input.acceleration(Dimension.Y))
    basic.pause(80)
})

// ハートビート=書き込み済みの目印
basic.showIcon(IconNames.Yes)
basic.pause(400)
basic.clearScreen()
basic.forever(function () {
    led.plot(2, 2)
    basic.pause(400)
    led.unplot(2, 2)
    basic.pause(400)
})

書き込みの手順

  1. 公式エディタ makecode.microbit.org を開き、新しいプロジェクトを作る
  2. 画面上の { } JavaScript に切り替える
  3. 右のコードを全部消して、上のコードを貼り付ける
  4. micro:bit を USB でつなぎ、ダウンロード(WebUSBならワンクリック。または保存した .hexMICROBIT ドライブにドラッグ)
  5. 書きこめたら、USBケーブルを いちど抜き差しする(これをしないと、つぎの一覧に出ないことがある)
  6. ゲーム画面で 自分のmicro:bitで参加 → micro:bit を選ぶ

しくみ(どうやって動くの?)

micro:bit は 0.08秒ごとに「傾きX,傾きY」を、ボタンを押すと「A」「B」を、USBケーブル経由で文字として送信します。サイト側(ブラウザ)はそれを読み取ってキャラを動かします。 MakeCodeでもPythonでも送る内容が同じなので、どちらで書いても同じように遊べます。
注意:USB接続は Chrome / Edge / Chromebook 専用(Safari・iPad・Firefoxは非対応 → その場合はゲームの「キーボード」「デモ」で遊べます)。
micro:bit のポートは同時に1つのタブ・アプリしか使えません。書き込みが終わったら編集エディタ側の接続を切って(またはタブを閉じて)からゲームで接続してください。うまく開けない時は micro:bit を抜き差し。

Bluetooth(ワイヤレス)で使う場合

ケーブル無しで使いたい時は Bluetooth 接続も選べます(Chromebook / PC / Android 対応。iPhone/iPad は不可)。いちばんかんたんな方法は、下の「BLE版をUSBで書き込む」ボタンです。用意ずみのBLEプログラム(ペアリング不要の設定ずみ)を、USBケーブルでワンクリック書き込みできます。
かんたん:ボタンで書き込む
micro:bit を USB でつないで、下のボタンを押すだけ。書き込みが終わったら一度抜き差しすれば、ゲーム画面の micro:bitで参加(Bluetooth) で一覧に出ます。
※ USB書き込みは Chrome / Edge / Chromebook のみ
うまくいかないとき → .hex をダウンロードして、MICROBIT ドライブにドラッグしてね(どの micro:bit でも書けます)。
「この micro:bit は、書きこみ用のプログラム(DAPLink)が古いため…」と出たときは、ケーブルやパソコンのせいではありません。その micro:bit の書きこみ用プログラムが古く、 ブラウザから直接書きこむ仕組みに対応していません。
そのままでも遊べます(上の「.hex をダウンロード → MICROBIT ドライブにドラッグ」で まったく同じものが書きこめます)。更新すれば、ほかの子と同じワンクリック書き込みが使えます。
1. いまのバージョンを見る
USBでつないで MICROBIT ドライブの DETAILS.TXT を開き、Interface Version の行を見ます。V1で 0249 より前なら更新の対象です。
2. 基板に合ったファイルを落とす取り違えないこと。裏面のバージョン表記で選ぶ)
3. 更新する
  1. ケーブルを全部抜く
  2. 裏のリセットボタンを押したままUSBをつなぐ
  3. ドライブが MICROBIT ではなく MAINTENANCE として出てくる
  4. 落とした .hexMAINTENANCE にドラッグ
  5. 黄色いLEDの点滅が止まるまで待つ(自動で再起動して MICROBIT に戻る)
  6. DETAILS.TXT をもう一度開き、バージョンが上がっていれば完了
※ 中の作品は消えますが、基板が壊れることはありません。もう一度書きこめば戻ります。
※ ファイルの配布元は micro:bit 財団(microbit.org)です。
MakeCodeで自分で作る場合(手動)
USB用とは別に、micro:bit へ専用のBLEプログラムを書き込みます:
  1. MakeCode で 高度な設定 → 拡張機能 → Bluetooth を追加(radio 拡張とは併用不可)
  2. 下のコードを貼り付けて書き込む
  3. プロジェクトの設定 →「ペアリング不要(No Pairing Required / JustWorks)」を選ぶ(ブラウザからそのまま接続できます)
  4. ゲーム画面で micro:bitで参加(Bluetooth) を押す
bluetooth-controller (MakeCode JavaScript)
bluetooth.startAccelerometerService()
bluetooth.startButtonService()
bluetooth.onBluetoothConnected(function () {
    basic.showIcon(IconNames.Yes)
})
bluetooth.onBluetoothDisconnected(function () {
    basic.showIcon(IconNames.No)
})
basic.showString("BLE")
陣取りバトルで試す →