mochizukiのICT活用ワンポイント(7439回〜7445回)

mochizukiのICT活用ワンポイント
7439回(7/12)micro:bit v2用Makecodeの新しい機能 1

micro:bit プログラム環境であるMakecode for micro:bit の機能がアップデートされたということで、いろいろ試してみようと思います。

まず、Makecode 
https://makecode.microbit.org/
にアクセスしてみると、画面の表示から変わっていることに気がつきます。
提供しているMicrosoftのロゴも左に移っていますね。

ブロックにかかれている文字は「日本語化」されているのですが、
以前と少しずつ表現が変わっています
こうなると、
・サンプルプログラミング集
に載せている画面も変えなければなりません。
微妙な違いを指摘されたり、違うことでとまどう方がいたりするからです。

しかし、
まだ若干変わっていく可能性(評判から修正される)もあるため、
もう少したって安定?してからのほうがよさそうです。
何度も修正するのも大変ですからね。

mochizukiのICT活用ワンポイント
7440回(7/13)micro:bit v2用Makecodeの新しい機能 2

・データロガー
という拡張機能で、本体内にセンサーの値を保存できるときいたので、
拡張機能を追加して試してみました。

せっかくv2 なので、音の大きさを記録。
以下は、Python画面でのコードです。

datalogger.delete_log(datalogger.DeleteType.FULL)
datalogger.set_columns(["sound"])

def on_every_interval():
led.toggle(2, 2)
datalogger.log_data([datalogger.create_cv("sound", input.sound_level())])
loops.every_interval(100, on_every_interval)

本体内のデータをダウンロードすると、
スプレッドシートでグラフ化できそうです。

mochizukiのICT活用ワンポイント
7441回(7/14)Cutebotを走らせる 1

今月末のハイブリッド型講座で、micro:bit用のロボットカーを走らせるので、下準備をしています。

まずは、v2のマイク(音センサー)から拾う音の大きさをグラフ表示
以下、python画面でのコードです。

def on_forever():
led.plot_bar_graph(input.sound_level(), 128)
basic.pause(200)
basic.clear_screen()
basic.forever(on_forever)

これで、0.2秒毎にまわりの音の大きさをグラフ化できました。
この値を使って走らせようと思います。

mochizukiのICT活用ワンポイント
7442回(7/15)Cutebotを走らせる 2

Cutebotを動かすには、拡張機能を読み込まなければなりません。

昨日つくった、
・まわりの音の大きさをグラフ化する。
プログラムの中に、
・まわりの音の大きさを数値化して前進する。
部分を組み込みました。

0.3秒ごとにループして音の大きさを判断するため、
前進する速度も「0.3秒毎に変わる」ことになります。

つまり「前で話す声の大きさによって動きが変わるロボットカー」ですね。
以下、python画面でのコードです。

def on_forever():
led.plot_bar_graph(input.sound_level(), 128)
cuteBot.move_time(cuteBot.Direction.FORWARD, input.sound_level() * 0.5, 0.3)
basic.clear_screen()
basic.forever(on_forever)

mochizukiのICT活用ワンポイント
7443回(7/16)Cutebotを走らせる 3

実際に廊下で走らせてみると問題が・・・。
最初は声を出すとその音で走り出すのですが止まらない。
なぜかというと、
「自分が走る際の音に自分が反応して走り続ける」
のです。

これを防ぐためには、
ある音量以上でないと走らないようにする必要があります。
やってみるとまた難しい。
・ある音量以上でないと動き出さない。
と、動き出させるのに大きな音を出さなければならないので、その調整(どこを閾値(いきち・・・境目の値))にするかを試行錯誤しました。
以下、python画面でのコードです。

def on_forever():
led.plot_bar_graph(input.sound_level(), 256)
if input.sound_level() < 160:
cuteBot.stopcar()
else:
cuteBot.move_time(cuteBot.Direction.FORWARD, input.sound_level() * 0.5, 0.3)
basic.clear_screen()
basic.forever(on_forever)

mochizukiのICT活用ワンポイント
7444回(7/17)Cutebotを走らせる 4

ロボットカーを追いかけながら声や音を出すのも大変だなと、
もう1台のmicro:bitを手に持ってそこに声を出すことにしました。

つまり、無線で値を送ってその値でロボットカーが走ればよいわけです。

つくりかたは意外と簡単で、受信側として昨日のプログラムを
・無線で値を受け取ったら に変更
送信側で、音の大きさを送信するようにします。

やってみると、声を出すとCutebotが走り出し、すぐに止まる。
そうかと思ったのは、「走る音で走り続けない」のです。考えてみたらマイクはロボットカーでひろっていないので当たり前ですね(笑)
以下、python画面でのコードです。
(送信側)
radio.set_group(1)

def on_forever():
led.plot_bar_graph(input.sound_level(), 256)
radio.send_number(input.sound_level())
basic.forever(on_forever)

(受信側)
def on_received_number(receivedNumber):
led.plot_bar_graph(receivedNumber, 256)
if receivedNumber < 160:
cuteBot.stopcar()
else:
cuteBot.move_time(cuteBot.Direction.FORWARD, receivedNumber * 0.5, 0.3)
basic.clear_screen()
radio.on_received_number(on_received_number)

radio.set_group(1)

mochizukiのICT活用ワンポイント
7445回(7/18)今週のまとめ

今週は、7/25に行う講座に向けて、
・Makecode のアップデート確認
・ロボットカーCutebotのプログラミング

を行いました。

Makecode Python画面にコードを貼り付けると、
ブロック画面で再編集もできますので、
試していただけるとよいですね。

続きは次回(7/25(日)にまとめて配信)。

この記事が気に入ったらサポートをしてみませんか?