見出し画像

AボタンとBボタンを使ってみよう

はじめに

micro:bit は、イギリスで開発された、子供から大人まで楽しみながらクリエイティブな創作活動ができるワンボードマイコンです。
ブロックを使ってプログラムをする方法は、日本でも、かなり広がってきましたが、このほど、Pythonのオンラインプログラミング環境が新しくなり、日本の小中高校生にも使いやすくなりました。

この記事では、はじめてmicro:bit でプログラミングする方の参考になるように、公式のPython オンラインプログラミング環境を利用して micro:bit を動かす方法について説明したいと思います。 

今回は、公式のPythonオンラインプログラミング環境の入力サポートを利用して、micro:bit のAボタンとBボタンを使ってアイコンや文字列を表示する方法について説明します。

準備

  1. 以下のURLに接続して、プログラム環境を開きます。
    https://python.microbit.org/

  2. プログラムエリアの上部の「Untitled Project」をクリックして、プロジェクト名を変更します。

  3. 5行目から9行目に入力されている以下の部分を消します。

# Code in a 'while True:' loop repeats forever
while True:
    display.show(Image.HEART)
    sleep(1000)
    display.scroll('Hello'

プログラムのベースを作ろう

ドラッグ&ドロップで基本の形をつくろう

  1. 画面左側の Reference にある「Buttons」を開きます。

  2. Button is Pressed の下にあるサンプルコードをコードエリアにドラッグ&ドロップします。

  3. 同じサンプルコードをコードエリアにドラッグ&ドロップします。後から追加した部分の「while True:」を消します。

  4. 後で追加した部分の「button_a.is_pressed()」を「button_b.is_pressed()」に直し、display.scroll('B')に変更します。

  5. 追加したコードは以下のようになります。

# Imports go at the top
from microbit import *

while True:
    if button_a.is_pressed():
        display.scroll('A')
    if button_b.is_pressed():
        display.scroll('B')

操作を動画で確認しましょう

エミュレータでの動作確認がおわったら、micro:bit にプログラムを転送して実行しましょう。

転送が終了したら、Aボタンを押すと「A」が、Bボタンを押すと「B」がスクロール表示されます。

プログラムを変更します

アイコン表示

ここまでで作成したプログラムを変更して、ボタンを押した時にアイコンを表示するようにプログラムを変更します。

  1. display.scroll() の行を削除する。

  2. Refarence から、Display を選択して、Images:built-in のところで、Select image: の横のメニューでimage の種類を選び、下のコードを、ドラッグ&ドロップで追加する。

変更したプログラムは以下のようになります。

# Imports go at the top
from microbit import *

while True:
    if button_a.is_pressed():
        display.show(Image.SMILE)
        sleep(400)
        
    if button_b.is_pressed():
        display.show(Image.CONFUSED)
        sleep(400)

操作を動画で確認しましょう。

登録されているアイコンは以下の19種類です。

  • HEART

  • HEART_SMALL

  • HAPPY

  • SMILE

  • SAD

  • CONFUSED

  • ANGRY

  • ASLEEP

  • SURPLYSED

  • SILLY

  • FABULOUS

  • YES

  • NO

  • MEH

  • DUCK

  • GIRAFFE

  • PACMAN

  • GOHST

  • SKULL

アニメーションの作成

[アイコンの利用]
アイコンを利用して画像を動かしてみましょう。HEARTとHEART_SMALLを交互に表示します。

例えば、以下のようにすると、HEARTとHEART_SMALLを交互に3回表示することができます。

注意:命令を増やす時、[TAB]キーを使って、display.show() と sleep() の先頭が揃うようにしてください。

if button_a.is_pressed(): の部分のプログラム

    if button_a.is_pressed():
        display.show(Image.HEART)
        sleep(400)
        display.show(Image.HEART_SMALL)
        sleep(400)
        display.show(Image.HEART)
        sleep(400)
        display.show(Image.HEART_SMALL)
        sleep(400)
        display.show(Image.HEART)
        sleep(400)
        display.show(Image.HEART_SMALL)
        sleep(400)

上のように書いても問題ないのですが、同じことを繰り返す場合、繰り返しの命令を使用する方がすっきりと書くことができます。Reference の Loop にある繰り返しのコマンドから計数ループ(Imdentation)のサンプルコードをドラッグして、プログラムを書き換えましょう。

注意:命令を増やす時、[TAB]キーを使って、display.show() と sleep() の先頭が揃うようにしてください。

if button_a.is_pressed(): の部分のプログラム

    if button_a.is_pressed():
        for i in range(5):  
            display.show(Image.HEART)
            sleep(400)
            display.show(Image.HEART_SMALL)
            sleep(400)

[自由に作成]

Reference の Display で Images:make your own を選ぶと、自由に5x5のアイコンを作成することができます。各要素は0〜9の数字で表し、9が最も明るく点灯し、0が消灯です。
if button_b.is_pressed(): のイメージを削除して、ここにサンプルのコードを追加してみましょう。中央が最も明るく周辺にいくほど暗くなる十字が表示されます。

if button_b.is_pressed(): の部分のプログラム

    if button_b.is_pressed():
        display.show(Image('00300:'
                           '03630:'
                           '36963:'
                           '03630:'
                           '00300'))

これを使ってアニメーションを作って、5回繰り返してみましょう。
アニメーション表示をするためには、display.show()とdisplay.show()の間にsleep()をいれてペースを調整する必要があります。

if button_b.is_pressed():
    for i in range(5):  
        display.show(Image('00300:'
                       '03630:'
                       '36963:'
                       '03630:'
                       '00300'))
        sleep(400)
        display.show(Image('03630:'
                       '36963:'
                       '69096:'
                       '36963:'
                       '03630'))
        sleep(400)
        display.show(Image('36963:'
                       '69096:'
                       '90309:'
                       '69096:'
                       '36963'))
        sleep(400)
        display.show(Image('69096:'
                       '90309:'
                       '03630:'
                       '93039:'
                       '69096'))
        sleep(400)

Button was pressed と Button is pressed

Button was pressed

was_pressed() は、micro:bit の電源が入ってから、または、最後にボタンが押されてから、ボタンが押されたかどうかをチェックします。

例えば、下のプログラムでは、ボタンを押さえ続けたとき「A」が1回スクロール表示されます。

while True:
    if button_a.was_pressed():
        display.scroll('A')

また、このプログラムで、Aボタンを押して、最初の「A」がスクロールしている間に、さらにAボタンを2回押す(クリックする)と、最初の「A」に続いて、追加で2回(合計3回の)「A」がスクロール表示されます。

Button is pressed

is_pressed()は、ボタンが現在押されているかどうかをチェックします。

例えば、下のプログラムでは、ボタンを押さえ続けたとき「A」が、何度も連続してスクロール表示されます。

while True:
    if button_a.is_pressed():
        display.scroll('A')

また、このプログラムで、Aボタンを押して、最初の「A」がスクロールしている間に、さらにAボタンを2回押す(クリックする)と、「A」は1回しか表示されません。

まとめ

今回は、micro:bit の新しいオンライン Python エディタを使用して、ボタンを押して文字をスクロール表示するプログラムを作成し、ここに、アイコンを追加しました。
また、複数のアイコンを切り替えて表示したり、自由に作ったイメージを動かす方法を紹介しました。

次回は、micro:bit に搭載されているセンサーを使用したプログラムの作成について紹介したいと思います。


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