内蔵センサーとデバッグ


 

micro:bitは2500円程度と安価ですが、総合的に高性能で内蔵するセンサーも多種にわたります。

自身でこれらセンサーを個々に購入するとそこそこ高額になりますし、周囲は配線でグチャグチャ状態となります。

なので学習用としては非常にコスパが優れています。

詳細な仕様は スイッチサイエンス さんを引用 こちら

 

照度センサーは専用の物ではなく、表示装置のLEDマトリックスを利用しています。

LEDは通常発光させる目的で使用しますが、逆に光を受けるとかすかな電圧を生じます。

これを利用して、明るさデータを0..255の数値として取得することが可能になっています。(参考サイト

 

 

 

 

 

 

他に、

・マイクロホン

・タッチセンサー

・加速度センサー

・電子コンパス

を専用のチップ等で実装しています。

今回はこの中の

・加速度センサーを使った傾きの検知

を実習します。

 

 

加速度センサーのX,Y,Z軸にかかる重力から基盤面の

・ロールの傾き(左右)

・ピッチの傾き(前後)

を度( ° )で取得するブロックが用意されています。

 

画像は「microbit.org」様から拝借しました(感謝)

 

ピッチとかロールは飛行機の操縦用語によく出てきます。

詳細説明は こちら

 

 

左のようなプログラムを作ってください。(拡大します)

 

①「高度なブロック」「シリアル通信」

②「シリアル通信 名前と数値を・・」を取得

 ずっとの中へセットし

・値を入れる場所へ

 「入力 ・・・その他」から「傾斜(ピッチ)」をセット

・これを複写して、”ピッチ” を ”ロール” に変更

・「基本」から「一時停止(ミリ業)」入れて "1秒" に変更

 

できたらシミュレータで確認してみます。

③の「データを表示 シミュレーター」をクリックします。

 

 

画面の右側にグラフエリア

その下に先ほどプログラムした「ピッチ」「ロール」の値が1秒毎に表示されます。

 

micro:bitエミュレータ盤画像の上下左右をマウスクリックして盤を傾け、送られてくる値がどう変化するか観察します。

終わったら画面上側にある「←戻る」で開発画面に復帰します。

 

開発環境「makeCodeEditor」ではシリアル通信を送受信・表示する機能が標準で作り込まれています。

今作ったプログラムをmicro:bitに書き込めば、実際に基盤を動かしたセンサー値がリアルタイムで送られてきて、生データを見ることができます。

 

時間が許せば、明るさセンサーからどのような数値が送られてくるか確認してみてください。

 

シミュレータ上で明るさを変えるには、

シミュレータ盤面左上に現れる半月状の丸いアイコンを

上下にドラッグします。

 

実際の測定ではLED画面上に手をかざすなどで行います。

 

 

 プログラムは こちら

【実際のシリアルデータを観察】

 

左画面のようにリアルmicro:bitからのシリアル通信を受信するための2個目の「デバイス」ボタンが表示されるはずです。

プログラムを書き込んだらこれをクリックしてください。

 

micro:bitがシリアル通信を行うと背面にあるオレンジ色のLEDが1秒毎に点滅しているはずです。

 

「makeCodeEditor」画面にデータが表示されない場合は、一旦ブラウザを再起動したり、最悪パソコンを再起動してみてください。

 

 


ところで「デバッグ」って何?


 

デバッグとは、"deBug" すなわち ”虫を取り除く” という意味 ※

プログラム内に潜み悪さをする誤りを探し修正することを指します。

 

高級言語を開発する環境は、ステップ実行や変数の監視&書き換えなんてお茶の子さいさいなんですけど・・・

micro:bitなどマイコンは表示装置がショボいのでデバッグに苦労します。

 

で、マイコンは簡単に実装できる「シリアル通信」という手法を用いてデバッグを行うことが多いです。(ICEという装置もマイコンによっては使えます)

プログラム内に「今どこの箇所を変数値いくらで通過しました! 」みたいな行を挿入します。

 いわゆるPrintfデバッグ。

 

シリアル通信は仕組みが単純なので、50年ぐらい前はパソコン通信で使われていましたが現在はその役目を終えています。

しかしマイコンのチップやセンサー間、マイコンと母艦PCの間では、まだまだ現役で使われることが多い通信手段なんです。

詳しい説明はこちら

今回はUSBケーブルを介してシリアル通信を行います。

 

※deBug 初期のコンピュータはリレーで動いていて隙間に虫が入り込んで死亡、これが回路の不具合を起こし誤動作させたことから実際に虫を探した。そうな

都市伝説ではない。こちら を参照

 

 

ーーー これでセンサー&デバッグの実習は終わりです ーーー