MakeCodeでLEDの明るさを徐々に変えてみよう


上の動画のようにLEDの明かりを徐々に明るくした後、徐々に暗くしていきます。

動画では点滅しているように見えますが、撮影したカメラの都合で、実際は点滅は目立ちません。


MakeCodeでLチカをしてみようでデジタル出力で、信号を送る場合は 1 、信号を送らない場合は 0 といった形で送信の有無のみを見ていましたが、これではLEDに明るさに関する信号を送信することが出来ません。

今回はLEDの明るさの調整をする為にPWM(パルス幅変調 Pulse Width Modulation)というものを利用しますが、いきなり細かい話に入ると難しいので、PWMを簡単に扱えるアナログ出力について見ていきます。

入出力端子 — BBC micro:bit MicroPython 1.0.1 ドキュメント#PWM




マイクロビットとLEDの繋ぎ方はMakeCodeでLチカをしてみようと同じにします。

MakeCodeで下記のコードを作成します。



変数を複数使用して一見複雑なコードになっていますが、このコードで実現したいことは、アナログで出力する時の値を1ミリ秒事に大きくして、最大の値(1023)になったら、1ミリ秒毎に小さくしていきます。

アナログで出力は0〜1023までの値を指定でき、値はLEDの明るさになります。

※ 0 の指定で消灯


上記のコードをマイクロビットにフラッシングして、冒頭の動画のようにLチカできることを確認しましょう。


今回のコードでの工夫点として、add変数があります。

add変数はアナログ値の増加の時は 1 になっていて、valueに1ミリ秒事に 1 ずつ足していきますが、valueが1023になった時にaddの値を -1 にして、valueを1ミリ秒毎に 1 ずつ減らすようにします。

今回のようなadd変数で 1 と -1 を切り替えることをトグル(toggle)と呼び、プログラミングで頻繁に使用します。