本講座では予め用意されているブロックを使います。
この講座ではmicro:bitのVer.2.xを使っているので、
「microbit V2 超音波センサー(cm)」ブロック
を使用します。
Ver1.5基盤の場合は「超音波センサー(cm)」を利用します。
「microbit V2 超音波センサー(cm)」などの楕円形をしたブロックは、何かを実行した結果(数値や状態)を格納しています。
この結果(今回は距離)を私達が見える状態にしてやらなければなりません。
「出力」が必要なのです。
今回はmicro:bit基盤に搭載されているドットマトリックス表示装置を利用してみましょう。
「LED」群の「棒グラフを表示する・・・」ブロックを使います。
超音波センサーで得た距離を左図のようなグラフで見る計画です。
距離に応じて、LEDの点の数が多くなったり少なくなったりします。
「Tinybit」群から
「microbit V2 超音波センサー(cm)」をドラッグし、
「値」の部分でドロップします。
最大値は「100」としてください。
0~100cmまでの値をグラフで表示するという意味です。
超音波センサーは連続して動かすことはできません。
測定には少し時間(200ms)を空けないといけないルールがあります。
なので、「基本」群から「一時停止(ミリ秒)」を
「棒グラフ表示・・」の下に組み込みます。
今回は、0.5秒に一回(500ミリ秒)距離を測定しグラフ表示させます。
左画面のように数値を500に変え、プログラムを完成させてください。
完成です。
プログラムをTiny:bitに書き込んでください。
「ダウンロード」ボタンをクリックします。
このプログラムは消費電力が少ないので、Tiny:bit本体の電源をONにしなくても動きます。
実験中
上の写真が50cm
下の写真が20cm
注意:
micro:bitのバージョンが1.5、Tiny:bitのバージョンが2.0の場合は正しく計算されないようです。
自身で計算させれば無問題と思われますが・・
ーーー この実習は終わりです ーーー
【参考】
micro:bitの「拡張機能」から「sonar」を組み込むと
自身で距離を計算できるようになります。
Tiny:bitで直接制御したい場合は
Pin16がトリガー(発信)、Pin15がエコー(受信)
と設定してください。(内部で15/16Pinに接続されています)
参考説明「子供のプログラミング」様 (本講座では扱いません)
double 音速 = 331.5 + 0.6 * 25;
:
void loop() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite( TRIG, HIGH );
delayMicroseconds( 10 );
digitalWrite( TRIG, LOW );
往復時間 = pulseIn( ECHO, HIGH );
if ( 往復時間 > 0) {
往復時間 = 往復時間 / 2;
距離 = 往復時間 * 音速 * 100 / 1000000;
Serial.print("距離:");
Serial.print(距離);
Serial.println(" cm");
}
delay(200);