クリエイター手抜きプロジェクト[644]IoT IchigoJam編 RISC-V CPUでの実行速度を計測
── 古籏一浩 ──

投稿:  著者:



今回は、マイクロビットのPython(パイソン)で、ボタンからの入力に応じてLEDに表示するアイコン(画像)を変えてみます。

マイクロビットには左右一つずつボタンがあります。マイクロビットのPythonでは、左側のボタンがbutton_a、右側のボタンがbutton_bになっています。ボタンが押されるとTrue、押されていない場合はFalseを返します。

押されたボタンによって表示するアイコンを変えてみましょう。ボタンが押されたかどうかはifを使います。ifの後に調べたいボタンの名前を書きます。直後に.(ドット)で区切ってis_pressed()を書きます。これは押されたかどうかを返すメソッドです。

左ボタンが押されたら笑い顔、右ボタンが押されたら泣き顔の画像を表示するプログラムは、以下のようになります。





from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
if button_b.is_pressed():
display.show(Image.SAD)

マイクロビットの左右のボタンを押すと、LEDに表示される画像が変わるはずです。もし、エラーメッセージが表示されたら、どこかが間違っているので確認しましょう。特にインデント(字下げ)はPythonでは重要なので、スペースが余計に入っていないかどうかなど念入りに確認してください。

一応マイクロビットのPythonエディタでは、薄い縦線が表示されインデントが分かるようになっています。でも、もう少し明るい色にして欲しいなとは思いますが。

ボタンが押されたかどうかを調べるメソッドは、他にもあります。was_pressed()メソッドは、ボタンが押されていたかどうかを、TrueまたはFalseで返します。

from microbit import *
while True:
if button_a.was_pressed():
display.show(Image.HAPPY)
if button_b.was_pressed():
display.show(Image.SAD)

もう一つ、get_presses()メソッドがあります。このメソッドは押されたボタンの回数を返します。
以下のようにプログラムを書くと、1秒間に何回左ボタンを押したかがLEDに表示されます。

from microbit import *
while True:
counter=button_a.get_presses()
sleep(1000)
display.show(counter)

ボタンを押した回数は、sleep()での待ち時間中も計測されます。ということで、これを利用したゲームを作ってみました。

以下のゲームは二人で対戦します。2秒間で左右どちらのボタンを多く押したかを競います。より多くボタンを連打した方が勝利となり、勝利した側のボタン名がLEDに表示されます。また、引き分けの場合は!が表示されます。

from microbit import *
while True:
counterA=button_a.get_presses()
counterB=button_b.get_presses()
sleep(2000)
if counterA==counterB:
display.show("!")
if counterA>counterB:
display.show("A")
if counterA<counterB:
display.show("B")


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


Web関係ならスマートな感じで、机の上や部屋も整理できそうなんですが、IoT絡みだと部品やらなんやらで、なかなかきれいに片付かないという。ホームセンターで電子部品を入れる箱を利用して、ラズベリーパイ用とか、M5Stack関係とか、IchigoJam関係とかに分けて入れてあるのですが、それでも片付かない。

編集長が近況よろしくということですが、コロナに関係なく、いつもマイペースというか、そんな具合です。
どこかの家の猫が金魚の糞みたいに、とにかくべったりくっついて来るというのが一年前と違うところ。

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/