micro:bitの拡張機のでライントレース時のログを取ってみた

pxt-microbitを調べている間に、すでに拡張機能でmicro:bit内蔵のFlashにログが取れる機能があることを知りました。で画像下の黒ラインをトレースさせた結果のログを取ってみると、

こんな感じで画像化できました。ログデータはmicro:bitディレクトリから見えるMY_DATA.HTMをダウンロードするとcsvファイルなのでnumbersで加工。ログをクリアする処理を処理の初期化で入れてしまうと、ログを取ろうとすると中身が消えてしまうので追記型にしています。

ログの対象はモーター駆動パワーと、ラインセンサーのフォトトランジスタ電圧をAD変換したもの。駆動パワーが130を超えている部分はラインを逸脱しそうになって右回転あるいは左回転を実行している部分です。

グラフ化してみると概ねイメージと合っていますが、データをビジアル化してみるのは理解が早まると思います。

今現在のコードは、

https://github.com/chateight/trace_microbit

P.S. 2023/6/14

フラッシュメモリへのログは予想以上に時間がかかっていて、ループ時間のおよそ30msは大半がログのための時間のようです

 

admin

 

 

 

makecode for microbit

makecodeのうちでmicrobit用のバージョンがmake code for microbitになります。pxtという言葉も出てきますが、makecodeというのは目に見える画面エディタのことで、pxtはmakecodeを動かすためのGitHubのリソースのことだという記述があります。

https://github.com/microsoft/pxt-microbit

にmicrobit用のpxtリソースが存在しますが、このpxtリソースでできることは、

① makecode for microbitをローカルサーバーで動かす

② ローカルで開発環境を構築

の二つだと思います。

手順通り動かしてみると、ローカルでmakecode for microbitが立ち上がりました。

大半はTypeScriptで拡張機能が実現できそうですが、ハードウェアを扱うときにはC++も必要になるでしょう。

 

admin

Static TypeScriptはmakecode for microbitの拡張機能作成で使われる

makecodeはマイクロソフトが開発したオープンソースでユーザ側が自由に拡張できますが、その元になっている仕組みを調べ始め。ネット上には情報が少ないですが、

きっかけは、

https://interface.cqpub.co.jp/magazine/202202/

ですが、雑誌というのは決まった分量に収めないといけないので、行間が省略されているので、雑誌のテキストだけではよく理解できないので自分なりに理解のための整理。

makecodeで何ができるのか?

開発がマイクロソフトなので、① Arcade、② micro:bit、③ Minecraftができるということです。

makecodeの開発言語はStatic TypeScript、なぜStaticなのかというとメモリの少ないマイコンでJavaScriptの動作環境は用意できないからネーティブのコードに変換する、つまりJavaScriptが持つDynamicな機能は削除されたTypeScriptのサブセットなのでStaticという名前がつけられています。実はmakecodeの開発環境にはTypeScipt以外にBlocksとStatic Pythonも使われている(BlocksとStatic Pythonはコンパイル時にTypeScriptに変換される)ようです。Blockは” Blocks is implemented using Google Blockly.“だそうですが、ScratchもGoogle Blocklyを使っています。

<makecode用の言語についてのリンク>

https://makecode.com/language

一方pxtはStatic TypeScriptコンパイルの実行環境。

<pxtについてのリンク>

https://github.com/Microsoft/pxt

pxtの実行環境には三種類あるそうですが、

“PXT programs are executed in at least three different environments: microcontrollers, with native code compilation (ARM) browsers * server-side JavaScript engines (node.js, etc)”

実際的にはnode.jsを使うのが一番ポピュラーでしょう。

 

admin