簡易オシロスコープ
概要
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")
使いかた
以下の操作ができます.
- Aボタン:再スキャンする
- Bボタン:画像をscopeX.bmpというファイル名で保存(Xは0,1,2,...の通番の番号になります)
- Aボタンを押しながらBボタン:終了する
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 まで