演習8:加速度・温度・磁気センサー

micro:bit 内蔵のセンサーを使ってみます。

micro:bit のバージョンの確認

microbit には新旧バージョンの基板があり、搭載されているセンサーの種類が違います。基板の裏面を確認してください。写真左側が旧基板、右側が新基板です。教材として使っているのは新バージョンの基板なので、その前提で説明を進めます。(旧基板のmicrobitが混入していたら連絡してください。)

ちなみに、2020年11月に更に新しいバージョン(micro:bit V2)がリリースされていますが、授業では使用していません。

ライブラリの導入、サンプルプログラムの入手

Github からセンサーのライブラリを導入します。

GitHub - stm32duino/LSM303AGR: Arduino library to support the LSM303AGR 3D accelerometer and 3D magnetometer
Arduino library to support the LSM303AGR 3D accelerometer and 3D magnetometer - stm32duino/LSM303AGR

上記ページで [Code]>[Download ZIP] を選ぶとZIPファイルが降りてきます。Arduino IDE の [スケッチ]>[ライブラリをインクルード]>[.ZIP形式のライブラリをインストール] で、ダウンロードしたZIPファイルを指定するとライブラリがインストールされます。

Github のページに戻り、examplesのフォルダーの下にサンプルプログラムがあるので、そのソースコードを Arduino IDE に貼り付けてコンパイル、micro:bit に書き込んでください。Githubのページに、API情報が書いてあります。API情報とサンプルプログラムを見比べて、各センサー値の読み方を確認してください。

  • 加速度 : Acc->GetAxes()
  • 温度  : Acc->GetTemperature()
  • 磁気  : Mag->GetAxes()

シリアルモニタで確認

[ツール]>[シリアルポート] に “BBC micro:bit” の文字列が含まれるものが選択されていることを確認したら、[ツール]>[シリアルモニタ] を開いて加速度・磁気・温度の各センサーの値が読めていることを確認してください。このとき、サンプルプログラムが通信速度を9600bpsに設定しているので、シリアルモニタも9600bpsに設定しなければなりません。

シリアルモニタを閉じて、[ツール]>[シリアルプロッタ] でセンサーの値がグラフ表示されることを確認してください。micro:bit を振ったり傾けたりするとグラフが変化します。プログラム中に delay(250); の命令が2行ありますが、この値を小さく変更して書き込むとセンサーの反応が早くなり見やすくなります。例えば、delay(250);   →   delay(50);

課題

センサーから温度データを読み取って、micro:bitのLEDアレイに温度を表示するプログラムを作ってください。

回答例はこちら

コメント