マイクロビットでは、温度、周辺の音量や傾き等のデータを取得でき、そのデータを活用して様々な電子工作を行っていきます。
電子工作を進める上で苦戦するのが、マイクロビットが周辺から得られたデータをどのような数値で扱っているのかを知ることで、数値を可視化できる方法を知っておくと便利です。
今回はmicro:bit Python Editorのシリアルを表示というマイクロビットが得たデータをグラフ化する機能を見ていきます。
シリアルを表示は接続でPCとマイクロビットを繋ぐ必要がありますので、事前に設定しておきましょう。
今回はMakeCodeのShow data デバイスを使ってみようでMakeCodeの方で作成しました
をマイクロパイソン(MicroPython)で書き換えます。
from microbit import * while True: lv = microphone.sound_level() msg = "vol:"+str(lv) print(msg) sleep(1000)
マイクロパイソンで簡易的なシリアル通信を行う時は、print関数を使います。
print関数に文字列を渡す事でエディタに文字列を送信します。
上記の内容を踏まえて、各行の詳細を見ていきます。
from microbit import *
でマイクロビットの各機能を用いるライブラリを読み込みます。
while True:
は次の行からのブロックの処理を繰り返します。
lv = microphone.sound_level()
で周辺の音の音量を数値として取得し、
msg = "vol:"+str(lv)
で音量の数値を文字列に変換して、vol:と連結した後、
print(msg)
で文字列を送信します。
sleep(1000)
で1秒(1000ミリ秒)待ち、while True:の次の行に戻ります。
上記で作成しましたコードをUART(Universal Asynchronous Receiver/Transmitter, ユーアート)で書き換えてみます。
from microbit import * while True: lv = microphone.sound_level() msg = "vol:"+str(lv) uart.write(msg.encode()) uart.write("\r\n".encode()) sleep(1000)
UARTのwrite(書き込み)では、文字列をバイト列に変換する必要があります。
※文字列のまま送信も可ですが、常にバイト列に変換しておくと意識しておくと良いです。
msg = "文字列" b = msg.encode()
で文字列をバイト列に変換して、
uart.write(b) uart.write("\r\n".encode())
でバイト列 + 改行コードのバイト列を送信します。
改行コードを送信しておかないと、シリアルを表示の画面(コンソール)で、出力内容が直列に並び、値を確認しにくくなります。
print関数の方式と比較するとUARTは難しいですが、コンピュータを理解する為のエッセンスが詰まっています。
プログラミングを続けてコンピュータの理解が進んだ頃にUARTに再度触れると良いでしょう。
UART — BBC micro:bit MicroPython 1.0.1 ドキュメント