micro:bitでLチカ

micro:bitとは

micro:bitはプログラムの教育用に作られたコンピュータです。

BBC Micro:bitは、1980年代に情報教育のために英国放送協会が開発したBBC Microが各学校で使用されたように、英国の11歳と12歳の小学生全員に配布される低消費電力、低コストのシングルボードコンピュータ。出典:wikipedoia

小学生全員に配布できるくらいの値段のはずですが、残念ながら日本では2000円くらいします。

raspbery pi zeroが650円なので、micro:bitのコスパはいまいちですが、コンピュータの仕組みを理解するうえではこれほど良い教材はありません。

web系とかのように、コンピュータの仕組みについてあまり知らなくてもよい人たちがコンピュータの基本を学んだり、家電に入っているコンピュータ(マイコン)がどのようなことをやっているのかを考える(推定する)ことができます。

Lチカ

家電など、装置に組み込まれているコンピュータを総合して「組み込み系」といいます。

「組み込み系」は体温計や、電子レンジ、洗濯機など身近なものに存在しますが。車や戦闘機なども同じで多くのコンピュータが制御を行っています。F-35(戦闘機)のICPとかの場合はちょっと規模がちがいますが。

このPCとは違うコンピュータですが、DIYとか趣味用に売られている組み込み系のボードがあります。このボードで最初に行う儀式として有名な「Lチカ」というものがあり、これは単純にLED(発光ダイオード)をチカチカ点滅させるというものです。これはソフトウェア構築環境が環境が正しく作れているかを確認する儀式ですが、昔ははRS-232Cで「hello world」の送信でした。最近のPCにRS-232Cが付いていないので、今はLチカが主流です。

micro:bitでLチカ

micro:bitでLチカしてみます。

まずは公式https://microbit.org/ja/guide/に行きます。

そしてプログラムしましょうに行きます。その中のJavaScriptブロックエディタのちょっと下のプログラムしましょうをクリックします。

ここで以下のような画面が出るので、新しいプロジェクトをクリックします。

プロジェクト作成後にとりあえず「基本」をクリックするとこうなりました。「LED画面に表示」というものがあります。

「LED画面に表示」をクリックすると、エディタに置けました。形的に「最初だけ」とか「ずっと」に入りそうです。

入りました。

Lチカは点灯と消灯の間に一定時間の停止時間(sleep)を入れないと、コンピュータが速すぎるので点滅しているように見えません。

「基本」にある「一時停止」がsleep相当の処理だと思われます。本当はON・OFFのみだけがLチカなのですが、せっかく5x5のLEDが設定できるので「L」「チ」「カ」と表示してみます。

micro:bitにプログラムを書き込み

micro:bitにプログラムを書き込みまう。以下はWindows環境での書き込み方法です。

USBでmicro:bitとPCを接続すると、リムーバブルディスクで「MICROBIT」というものができます。ここ作成したLチカプログラムをmicro:bitに書き込みます。

やり方はとても簡単です。左下にある「ダウンロード」ボタンを押します。

edgeではファイルの保存を行うメッセージがでます。(chromeとかはちょっと動きが違います。)

保存先に「MICROBIT」を指定して「保存」ボタンを押します。

書き込みが終わるとLチカプログラムが動き始めます。うまくいかないときはUSBケーブルを抜き差ししてみてください。

Lチカプログラムはこんな感じ

動きを動画で撮影してみました。マクロレンズで手持ちはキビシイです。


結構すごい

10分もかからずLチカできました。多少知識はありましたが、これはすごいことだと思います。

また、プログラムをテキストエディタであなくブロックエディタで作るいうのはびっくりしました。これはscratchというものらしいです。

ブロックで作成したものがJavaScriptに変換されるようですね。「JavaScript」ボタンを押すと以下のようになりました。逆の変換も可能なようですが、今のところちょっといまいちです。

マイコンボードLチカをするには、開発環境のインストールや、makefileを作ったり、リセットのベクタアドレスを調べて絶対番地でリンクしたり、mainを呼び出すためのcrtを組み込んだり、スタックサイズの初期値を調べたり・・・Lチカにたどり着くには、一般的な人には単語すらわからないろいろな障壁があったものです。

このようなことも気にせず、小学生が使える仕組みを作ったのは画期的ですね。マイコンをJavaScriptで動かす日がくるとも思ってなかったし。

Bluetoothも使えるようなので、こんどラジコン作ってみよう。