このところ連続している「VS Codeで~」シリーズ(実際に、汗水たらして働いている?のはPlatformIOなのですが)、前回はNucleoボードをターゲットにMbedしてみました。まあ、マイコン開発ボードだし、できて当然だし。。。しかし今回は、かのお子様コンピュータ BBC Micro:bitがターゲットです。C++で書けるし、デバッガだって使えるし。
※「鳥なき里のマイコン屋」投稿順Indexはこちら
以前にMicro:bit触ってから、だいぶうっちゃらかしておりました。そのときは、Micro:bit側は、ファンシーなBlockエディタ(JavaScriptベース)で「絵を描いて」動かしていました。しかし、エディタであるVS Code+PlatformIOには、まったく違う顔を見せてくれます。例によって PlatformIOのProject Wizardから、ターゲットボードを BBC micro:bitに設定し、フレームワークをMbedに指定してプロジェクトを構成してみます。
なんやかやの設定を一手に引き受けてくれる、PlatformIOのお陰で、ただこれだけで、即アプリを書ける状態に達するのは、慣れたとは言え感動ものです。さて、今回もクイックな動作確認だあ、と逃げを打ちつつ、ありもののサンプルプログラムを使わせていただいて動かしてしまうことにいたします。参考にさせていただいたのは、Mbedの以下のサンプルです。
ぶっちゃけLチカなのですが、コメントから1行引用させていただくと
All the LEDs on the micro:bit are part of the LED Matrix,
Micro:bitは大量のLEDを積んでいるので、普通のボードのように適当なポート1本じゃ制御できない、ということです。Mbedのサンプルページを見ているので、どのポートにするかは分かってはいるのです。しかし、VS Code+PlatformIOの素晴らしいところは、P0_とか打てば、ちゃんと候補がインテリセンスされてくるところです。こんなに楽で良いの?
さて、そのままビルドして、OKだったです。
動いているところは、アイキャッチ画像
を御覧くださいませ。せっかく大量にあるLEDの、端っこの1個だけが点滅しておりますよ。
が、やはり、折角なのでデバッガを使ってみましょう。デバッグ用のビルドについても簡単です。デバッグ開始を指定するのみ。ここでもPlatformIOのパッケージマネージャー様は偉大です。必要なモジュールを適当に手にいれてきてくれて、使命を遂行してくれるのです。こんな感じ。
ここまでくれば、Nucleoだろうが、BBC micro:bitだろうがやることは変わりませぬ。同じArmコアのマイコンです。例によってデバッガのツールバーが出現するし、左側には変数表示が出現します。こんな感じ。
LEDを制御しているmyledというDigitalOut型のオブジェクトですが、変数ウインドウで吟味してみれば、上の通り、P0_13のハードウエアレジスタに割り付けられていることが分かります。当然、ブレークポイントでは止まっているし。