上の動画のように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)と呼び、プログラミングで頻繁に使用します。