この時に使えるのが、先回紹介したforという命令です。
先回は以下のように紹介しました。
for(int i=0 ; i<回数 ; i++)
{
命令;
...
}
と書くと、回数の数だけ命令を繰り返し実行してくれます。
もう少しforの部分を詳しく紹介すると
for( A ; B ; C )の
Aの部分は、変数というメモリーの用意と最初の値の設定
Bの部分は、繰り返す条件
Cの部分は、繰り返す時の変数の増え方
を書きます。
Aでは、繰り返す時のカウンターとして使うメモリー機能(変数)をマイコンに用意させます。そして最初の値を書き込みます。
準備する変数には、1,2,3という整数のみ使える物と、1.5,2.8,3.3というように小数まで使える物があります。
iという名前で、整数のみ使える変数を用意する時は
int i;
iという名前で、小数まで使える変数を用意する時は
float i;
と書きます。
上記のfor命令はiは、0,1,2...と整数でカウントアップしたかったので、intを使いました。そして0からカウントアップしたかったので、最初の値が0となるように
int i = 0; ( 整数の変数iを用意して、0を入れてください という命令になります)
となっています。
Bでは、繰り返す条件を書いておきます。 i<4 とすると iという変数が0,1,2と増えていって3になった時点で繰り返しを終了します。このため{ }の中が4回繰り返されます。i<=4 と書くと i≦4の意味になり、0,1,2,3,4まで繰り返して終了します。このため{ }の中が5回繰り返されます。
Cでは、繰り返す時の値の増え方(減り方でもOK)を指定します。i++は i = i + 1 の省略で、繰り返すたびにiを1ずつ増やします。
今回myledの値を0から0.01ずつ増やしていきたいので、
Aでは準備する変数は、小数が使えるfloatで、最初の値を0にします。なので float i = 0.0
Bでは、myledの値は1まで増えて欲しいので、i <= 1.0
Cでは0.01ずつ増えて欲しいので、i = i + 0.01
とforの命令を書けばよいことになります。
floatの時は、数字に".0"を付けるようにしてください。付けないと整数として計算されてしまうことがあります(問題ないこともありますが)。
それではプログラムを書いていきましょう。「新規」でプログラム名を「mbed_pwm2」としてプログラムを作成します。
先回と同じく、そして3行目のDigitalOutをPwmOutと書き換え、カッコの中のLED1をdp18に書き換えます。
6行目と7行目の間に先ほど紹介したforの命令を書いていきます。
for( float i = 0.0 ; i <= 1.0 ; i = i + 0.01 )
次の行に { を忘れないで書いてください。
9行目のmyled = 1; を myled = i;に変更します。
これで、myledには0から0.01ずつ1.0までの値が入ることになります。
10行目のwait(0.2); を wait( 0.02 ); を一けた減らします。
11,12行は消して } を追加します。
これで、プログラムは完成です。「コンパイル」をクリックしてファイルをダウンロードしておいてください。
プログラムはこちらよりダウンロードできます。
次は回路をつくります。
今回はdp18を使っているので、ブレッドボードの右側の11行目にLEDの足の長い方を挿して、LEDの短い足を青いグランドの電源ラインに挿します。LEDは青か白を使いましょう。
あとは、マイコンとねこちゃんをこちらを参考につないでください。
ねこちゃんのUSBをパソコンとつないだときにできるドライブに、先ほどダウンロードしたファイルをコピーしてください。
これで書き込み完了です。赤いおめめを押してみてください。
LEDが徐々になめらかに明るくなるように光りましたか?
forの命令の説明が長くなり、難しいと思われたかもしれませんが、書いてみるとシンプルです。
ちなみに、徐々に暗くする場合には、7行目のforのカッコの中を
for( float i = 1.0 ; i >= 0.0 ; i = i - 0.01 )
とすればOKです。
意味は、iという小数が使える変数を用意して、最初の値を1にする。iが0.0になるまで、iを0.01ずつ減らしていくという感じです。
今回のプログラムは「マイコンで発明しよう実験セット」で実験することができます。
コメント