前回の記事では、ブロックエディターの音楽ブロックとmicropythonを対比しながら説明しました。今回はLEDブロックとループブロックの紹介です。
当記事は、シリーズでマイクロビット(Micro:bit)のプログラミングについて紹介しています。初めての方はこちらをご覧ください。
以下の説明とサンプルプログラムは、こちらのページの内容を私なりに、ブロックエディターと比較してmicropythonで記述する例を紹介しています。クラス、関数、モジュールなどは最初は難しいかなという事で説明を省き、サンプルプログラムを通して理解できればと考えています。
LEDブロックについて
ブロック | micropython |
1.点灯、消灯
|
display.set_pixel(x, y, value) LEDの左上を0,0として右下の4,4まで、x列,y行を指定して、valueは明るさを0から9までの数字で指定します。valueに0を指定すると消灯できます。ブロックでは0から255の範囲で明るさを指定できましたが、micropythonでは0から9です。 以下は、真ん中のLED(2,2)を明るさ9で点灯し、その後消灯するプログラム |
2.点灯かどうか調べる
|
display.get_pixel(x, y) LEDの左上を0,0として右下の4,4まで、x列,y行で指定したLEDの明るさを0から9の値で返します。0で消灯しています。 以下はHAPPYイメージを表示後、LED1,1が点灯か調べてその明るさをLEDに表示するプログラム |
3.反転
|
同等の命令は実装されていません。2の点灯かどうか調べる命令を使い、明るさが0(9)なら1の命令で9(0)にします。 以下は、HEARTを表示して真ん中のLEDを反転するプログラム |
4.明るさを設定する
|
同等の命令は実装されていません。また、micropythonの明るさ指定は0から9までです。display.set_pixel(x, y, value)命令のvalueを変数で指定することで、代用できます。明るさを確認するには、2のdisplay.get_pixel(x, y)命令を使用します。 以下は、明るさを5にしてLEDを複数点灯するプログラム |
5.アニメーションを停止
|
同等の命令は実装されていません。しかし、6のdisplay.off()で代用可能です。この命令は本来、入出力PINとLEDの信号を兼用しているPINがあり、入出力PINを入出力専用にする命令です。再度、LEDを使えるようにするためには、6のdisplay.on()命令が必要です。 以下は、スクロールしているメッセージを3秒で止めて、1秒後にHAPPYアイコンを表示するプログラム |
6.表示をオン/オフにする
|
display.off()、display.on() LED表示を使うか使わないか設定できます。PINのP3, P4, P6, P7, P9, P10の信号はLEDと兼用しているため、これらのPINを入出力用に使うには、display.off()命令でLEDを使わない設定にする必要があります。 |
7.棒グラフをプロット
|
同等の命令は実装されていません。ただし、micropythonの命令を組み合わせれば実現できると思います。いつか紹介できればと思います。 |
ループブロックについて
ブロック | micropython |
1.くりかえし
|
for i in range(start, end, step) range()関数で指定された回数、以降の命令を実行します。 range(0,4,1)は0,1,2,3、range(4,0,-1)は4,3,2,1とiに代入されて実行されます。 サンプルのように、elseを使って決められた回数実行後に行う命令を指定できます。 以下は、4,3,2,1とカウントダウンし最後にHAPPYアイコンをLEDに表示するプログラム |
2.もし真(偽)ならくりかえし
|
while 条件式 基本ブロックの『ずっと』と似ていますが、条件式で偽の場合も指定できます。 以下は、偽の条件を使って5から0までLEDにカウントダウン表示するプログラム |
3.配列の値を変数に入れてくりかえす
|
for word in hairetu hairetu変数の配列要素を順にwordに代入して以下の命令が実行されます。 配列変数の例:haireru = [‘Japanese’, ‘English’, ‘French’] 以下は、英語で3,2,1とLEDにカウントダウン表示するプログラム |
LEDブロックとループブロックについての紹介は以上です。次の記事では論理ブロック/変数ブロック/計算ブロックの紹介をします。なお、無線ブロックについてはMicro:bitが現時点1台しかないので、テストできるようになるまで後回しにさせていただきます。
無線ブロックについても記事が完成しましたので、こちらの記事を参照ください。
最後まで記事をお読みいただきありがとうございます。
記事の改善に役立てたいと思いますので、よろしければアンケートにご協力ください。
コメントを書く