簡易オシロスコープ

概要

SSD1306の外部ディスプレイを利用した,簡易的なオシロスコープです.
こんな感じで表示されます.
上の左は500Hzの正弦波,右は100Hzののこぎり波のPWM波形の例です.SAMPNUMはサンプル数,TIMEは1目盛の時間です.
目盛り線は見えにくくなることを防ぐため,0レベルから2ドット下に引いてあります.

外部ディスプレイ(SSD1306)を接続して利用してください.


(利用イメージ)

起動方法

以下のscope.nllをYMRECV()でmicro:bitに転送してください.

micro:bit上で以下を実行して,scope.nllをロードしてください.

nll> LOAD "scope.nll"
ロード後に,以下のように引数を指定して実行してください.
(以下はAIN0からの入力を10kHzでサンプリングしてオシロスコープ表示します)

(注意:サンプリング周波数は1〜200kHzを指定できますが,10〜80kHzの間でないと値を正確に取得できないようです)

nll> RUN,("0","10")
以下のようにして,サンプル数とトリガを指定できます. 以下はサンプル数を64個として,±1000mVの範囲を超えたときにトリガがかかります.
(横幅は128ドットなので,サンプル数は128を割り切れる数で指定します.サンプル数を64にすると,2ドットあたりのサンプルになります)
nll> RUN,("0","10","64","-1000","1000")

使いかた

以下の操作ができます. CONFIG()でSTARTFILEで起動時実行するようにして,STARTARGSで引数を指定しておくことで, PCレスでmicro:bit単体で動かして測定し,画像を保存しておくようなことができます.
(後でPCに繋いで,Aボタンを押しながらBボタンで実行終了し,YMODEM()で画像をPC側に転送します)

以下は起動時にscope.nllを実行し,AIN0を10kHzでサンプリングする設定の例です.

nll> CONFIG("STARTFILE","scope.nll")
nll> CONFIG("STARTARGS","0 10")

メールは kozos(アットマーク)kozos.jp まで