MicroPythonでメインループのコードを書いてみようで作成しましたメインループのコードで、BボタンやABボタン同時押しの入力(イベント)を追加してみましょう。
作成するコードは下記のようにします。
Aボタンを押した時は
左矢印を表示し、Bボタンを押した時は
右矢印を表示します。
ABボタン同時押しは、
矢印の合体にして、何も押していない時は
×印にしてみます。
特に考えずに前回のコードに上から順にコードを追加してみますと、
from microbit import * while True: if button_a.is_pressed(): display.show(Image('00900:' '09000:' '99999:' '09000:' '00900')) elif button_b.is_pressed(): display.show(Image('00900:' '00090:' '99999:' '00090:' '00900')) elif button_a.is_pressed() and button_b.is_pressed(): display.show(Image('00900:' '09090:' '99999:' '09090:' '00900')) else: display.show(Image.NO)
になるかと思います。
このコードをフラッシングして、動作を確認してみますが、AボタンとBボタンは反応しますが、ABボタン同時押しは反応しません。
※ABボタン同時押しの条件式は
elif button_a.is_pressed() and button_b.is_pressed():
の箇所
ABボタン同時押しが反応しない理由は、ABボタン同時押しの条件式の上で、AボタンとBボタンの条件式があり、ABボタン同時押しの場合、AボタンとBボタンのどちらかの条件式に該当するからになります。
この問題を解決するために下記のようにコードを書き換えてみます。
from microbit import * while True: if button_a.is_pressed() and button_b.is_pressed(): display.show(Image('00900:' '09090:' '99999:' '09090:' '00900')) elif button_a.is_pressed(): display.show(Image('00900:' '09000:' '99999:' '09000:' '00900')) elif button_b.is_pressed(): display.show(Image('00900:' '00090:' '99999:' '00090:' '00900')) else: display.show(Image.NO)
※AB同時押しの条件式を一番上に持ってきた
これでAB同時押しも反応するようになりました。