【マイクロビット】LEDの明るさを連続的に変える

LEDの明るさを制御する方法は?

こうした悩みを解決します。

明るさについて

明るさはLEDの光の強さを表し、その範囲は0〜255となっています。

明るさに関する資料は下記参照ください。

Led
Control of the LED screen.

LEDの明るさを連続的に変えるプログラム

作りたいプログラム:
LED全点灯させておき、明るさを0に設定(=消灯)。
最小から最大まで少しずつ明るくします。
最大まで到達したら、今度は少しずつ暗くしていきます。
最小まで到達したら、今度は少しずつ明るくしていきます。
以降、これを繰り返します。

はじめにコードを示します。

コード例

初期化(最初だけ)

はじめに”LED画面に表示”ブロックで、LEDを全点灯させます。
続けて2行目で、明るさを0に設定します。
⇛この時点でLED全点灯しているけど、明るさ0なので消灯しているように見えます。

本当は明るさを0にするのではなく、変数blightで明るさを制御するのでblight=0とするのが一般的ですが、
初期化しない変数の初期値は何なのか知りたかったので、今回こうしています。
動作させたところ、初期値不定は0になるようです。

3行目では、予め変数ブロックで宣言したup変数を1にします。
upは明るくするのか暗くするのかの状態を示す変数として宣言しており、1で明るく、0で暗くするということにしています。

繰り返し(ずっと)

はじめに、予め変数ブロックで宣言したblight変数を明るさに設定します。

明るくする(up = 1)なら、blight変数を現在値から4大きくします。
もしblight変数が最大値の255以上(blight ≧ 255)になったら、up=0にします。これ以降暗くしていきます。

暗くする(up = 0)なら、blight変数を現在値から4小さくします。
もしblight変数が最小値の0以下(blight ≦ 0)になったら、up=1にします。これ以降明るくしていきます。

課題

上図のコード例にはいくつか問題があります。

①明るさが0と255になりません。なぜですか。

②明るさを0と255で往復するにはプログラムをどのように変更すればよいですか。

③コード例のプログラムで明るく(暗く)していく時に、もしblight > 255(blight < 0)とした場合、動作はどうなりますか。

まとめ

・明るさはLEDの光の強さを表し、その範囲は0〜255となっています。
・変数で明るさを制御して、最大値以上で暗く、最小値以下で明るくなるよう動作します。


▼不明点や作成依頼などあればこちらからどうぞ
立プロに問合せる

▼インスタやってます

 

立プロ

組込エンジニア⇒個人事業主
ITと連携したビジネス発展をサポートしています。
C,C#,JavaScript, Vue, PHP, VBA, GAS, Kotlinなど、扱う言語が増えゆく日々。

立プロをフォローする
ブログ
立科プログラミング
タイトルとURLをコピーしました