C言語でmicro:bitのプログラムを開発する方法について,まとめました.

元々は NLL for micro:bit を開発するためのお試しサンプルとしてやっていたものですが,これはこれで有用かもと思ったので,まとめて公開したものです.(あと,いろいろWeb検索とかしたのですが,この手の情報はあんまり無いみたいです)

ブラウザを使わずに,gccベースで開発できます.

micro:bitへの書き込みは,micro:bitをUSBメモリとしてマウントし,生成されたhexファイルをコピーしてアンマウントするだけでできますので,Debian GNU/Linuxなどの環境だけで(Windowsを使わずに)開発できます.(私はFreeBSDでやっています)

 

 

 

NLL for micro:bitで簡易PWM発振器を作ってみました.

波形や周波数を指定して,PWMで発振できます.(ローパスフィルタを通せば,アナログ波になるはず)

micro:bitに拡張OLEDディスプレイを接続して利用します.

出力先をmicro:bitのスピーカーにすると,ピーピーガーガーと音を出して遊ぶことができます.

先月の簡易オシロスコープと組み合わせて,出力した波形を確認したりして遊ぶことができます.

 

NLL for micro:bit

↑「アプリケーション」の「簡易オシロスコープ」です

 

micro:bit で,簡易オシロスコープを作ってみました.

安価なオシロスコープとして利用できると思います.

 

10kHz〜80kHzのサンプリング周波数でキャプチャできます.

micro:bit用の拡張OLEDディスプレイに表示します.

トリガを設定して,決まった電圧を検出したらスキャンする,みたいなこともできます.

 

Aボタンで再スキャン,Bボタンでキャプチャ画像の保存です.

キャプチャした画像はファイルとして保存され,PCに転送できます.

 

乾電池&PC無しで動作させられるため,出先でちょっとオシロを使いたいときなどに便利かなと思います.

(家に余っているmicro:bitを簡易オシロにできます)

 

NLL for micro:bit のアプリとして作ってあるので,簡単な改造もしやすいと思います.

 

NLL for micro:bit

↑「アプリケーション」の「簡易オシロスコープ」です

 

(2026/01/05追記)

A/Bボタンでの操作をいろいろ追加しました.
・Aボタンを押しっぱなし:繰り返しスキャン
・Aボタンを押しながらBボタンを1回押し,Aボタンを離す:サンプリング周波数を変更
・Aボタンを押しながらBボタンを2回押し,Aボタンを離す:サンプル数を変更
・Aボタンを押しながらBボタンを3回押し,Aボタンを離す:トリガの有無を切替え
・Aボタンを押しながらBボタンを4回以上押し,Aボタンを離す:終了

 

 

NLLのmicro:bit移植を進めていますが,micro:bit shields for Arcadeのゲームパッド上で動作しました.

 

 

NLL for micro:bit

 

対象ハードウェアは以下です.ほぼリファレンス回路どおりのようなので,micro:bit shields for Arcadeの他のハードウェアでも動作するかもしれません.

 

https://kitronik.co.uk/products/56116-kitronik-arcade-for-bbc-micro-bit-makecode-arcade

 

独自言語「NLL」で動作します.テキスト型プログラミング言語で,ゲームを作ったりすることができます.

(NLLがベアメタルで動いています.言いかたを変えると,NLLがOSとして動いています)

 

PCとUSBケーブルで接続し,TeraTermなどの端末エミュレータで接続して操作します.

 

フラッシュROM上にファイルシステムを持っているので,プログラムを保存することができます.プログラムを書き込んで保存し,電源ON時に起動するプログラムを指定することで,PCと切り離して動作することができます.

 

このゲームパッドの標準の開発環境はMakeCodeですが,ディスプレイの下8ラインが使えない(320x240のディスプレイにスムーズに拡張できるようにするためらしい)のですが,NLLだと全画面が使えます.

あとMakeCodeでのグラフィックプログラミングは基本的にキャラクタベースなので(よく知らないですが),線や円を描くようなプログラムを書きたい場合には,NLLのほうがやりやすいかもしれないです.

 

独自言語「NLL」をmicro:bitに対応しました.

PCとmicro:bitをUSBケーブルで繋ぎ,端末エミュレータで接続するとNLLのプロンプトが出ます.

以下のことができます.ファイルシステム上にNLLのプログラムをいくつか保存しておいて,ロードして起動したり,テキストエディタで編集して実行したりができます.

micro:bitは標準の開発環境はブラウザ上でのプログラミングで,テキスト型言語だとMicroPythonが使えるようですが,それらとはまた違った「80年代のBASICっぽい感じの言語」でmicro:bitを制御できます.

  • micro:bitとPCをUSBシリアルケーブルで接続し,NLLでプログラミングして動かす
  • LED(5x5)へのグラフィック表示(グレースケール)や文字の表示
  • A/Bボタンの検知
  • 加速度センサ,磁気センサ,温度センサの値の取得
  • CPU温度の値の取得
  • GPIOの操作
  • サウンド
  • フラッシュROMをファイルシステムとして利用可能(ファイルサイズに上限あり)
  • ファイルシステムに設定保存
  • 起動時の実行ファイルを指定して,PC無しで起動して動作
  • USBシリアルケーブル経由でのPCとのファイルの送受信(XMODEM/YMODEM)
  • 簡易テキストエディタ(アプリケーション)

 

vectorにもあります.