micro:bitで車輪回転距離の取得が目標

 

何でこんな機能を追いかけるかと言うと、

以前「フォロ」を購入した際に
 ・フォロが真っすぐ歩けない
 ・歩いた距離が判らない
ことからあれこれ試行錯誤した結果
 ・機構的に精密な走行は無理なこと
 ・ジャイロセンサが毎回キャリブレーションが必要で扱い辛いこと
が判明しました。

 

フォロにはこれ以上を期待することは可哀そうだと判ったのですが、これを何とかしたいと思っての3輪バギーの購入


もちろん、出来合いのキットを買えば値段に応じた高性能な物件は入手できるんだけどそれではツマラン
ということで、パーツををやみくもに購入し四苦八苦して遊んでるような訳です。
ドMの世界ですね・・・

 

ということで、購入したフォトインタラプタの規格は5Vとだけ書いてあったが、無視

 

まずは出力をmicro:bitの2番ピンに、電源はmicro:bitの3.3Vに接続してみた。

5Vより低い電圧なので壊れる心配はないが、すんなりとBook-Offカードで遮った回数をカウントしている。

 

こういうのは「当たって砕けろ」精神の勝ち~

(火花は飛ばない)

 

 

本来は3V: <=> 5Vのレベルコンバータをかますべきだが、このセンサー基盤は3Vにも対応していたのだろうか。

AliExpressでは何の説明もなかった。(5Vさえも)

 

変換基盤はスイッチサイエンスで339円で売っている。何かの機会に1個買っておこうか。


古い5Vのセンサーを使う際やI2C通信などをする際に必要になりそう。

 

さて、1秒間の回転数RPMをどうやって求めるか。

 

どうもすべてのブロックを調べてみたが「タイマー割り込み」の単独機能は無さそうだった。

しょうがないので「バックグラウンド実行」を応用

 

もっといいやり方があるかもしれないが、何とかなった。

実行すると1秒ごとにハートマークが表示される。


・バックグラウンドで1000msスリープさせて適当なイベントを発生させる(画面ではABボタン同時押下)
・このイベントを検知したらハートマークを表示する

 

 

三輪車を正確に制御するためには、

 

cntクリア => モーターON => Wait(ms) => モーターStop => cnt取得
正確な物を求めるならば「制御」「稼働時間(ms)」を使うべきかな?

 

「リアルタイムで左右の回転数を補正して正しく目的地へ向かう」はまだまだ先の話です。

 

本日はここまで。