【初級編】LED×2個の明るさを変化させてみよう

0
1589

前回の「【初級編】LED×2個を同時点滅・交互点滅させてみよう」の回路とスケッチ(プログラム)を元にLEDの明るさを変化させてみようと思います。

使用するものは、前回と同じです。


<必要なツール>

  •  パソコン
  • USBケーブル( Aコネクタ – Bコネクタ )
  • Arduino UNO
  •  ブレットボードキット
    • ブレットボード
    • ジャンパー線(オスーオス)

<必要な部品>

  • LED×2
  • 抵抗 100Ω×2(他の抵抗でも可)

< 回路と配線 >

LEDの2本の足には極性がある為、短い方(カソード)を抵抗に、足の長い方(アノード)をArduino側に接続してください。今回は、デジタル入出力端子のD3とD5を使います。

  

 


LEDの明るさを変化させる

< スケッチ(プログラム) >

void setup()
{
 // put your setup code here, to run once:
}

void loop()
{
 int i;

 for (i = 0; i <= 255; i++)
 {
  analogWrite(3, i);
  delay(10);
 }
}

Arduino IDEを起動して、上記のスケッチを入力します。もし、別のスケッチが表示されていたら、メニューバーの“新規ファイル”ボタンをクリックして初期スケッチを開いてから入力してください。

 

入力できたら、メニューバーの“保存(↓)”ボタンをクリックして保存しておきましょう。今回は、スケッチ名を“LED_PWM”にしてみました。

PWM”というのは、デジタル制御でアナログ信号を生成する方法で、Arduino UNOでは、< 回路と配線 >の左側に表示したデジタルI/O(入出力端子)の内、ピン番号の前に“~”の付いた端子から出力することができます。

先ず左側の緑のLEDをPWMで制御してみます。

PWM出力の場合、上段の「void setup()」(初期設定)の記述は不要なので、いきなり「void loop()」(繰返し処理)の記述から始めます。

8行目は、「“i”を変数とする」

10行目では、“for”文を使って「“i”の初期値は0、“i”が255以下の場合は11行以下の“{ }”内を実行するが、そうでない場合(i=256)は、実行しない( → 8行目に戻る)、“i”に1を足す」

12行目では、関数“analogWrite()”を呼出して「3番ピンに“i”を出力する」

13行目は、関数“delay()”を呼出し「そのままで10ミリ秒待機する」という記述で、全体としては、“i”が255になるまで、12行目と13行目を繰り返し、“i”が256になると初期値の0に戻って又同じことを繰返すスケッチ(プログラム)になります。

ArduinoのPWMは8ビットで、0Vから5Vまでを0から255の段階で出力します。
従って、このスケッチでは、消灯状態から10ミリ秒 × 256 = 2.56秒かけてゆっくり明るくなり突然消灯することを繰返すはずです。

メニューバーの“検証”ボタンをクリックしてエラーが出なければ、“書き込みボタン”をクリックしてスケッチを実行させてください。もし、エラーが出たら、このスケッチは繰返しが2重に記述されているので、、11行目と14行目、7行目と15行目の“{ }”がちゃんと閉じているか確認してみてください。

2個のLEDの明るさを変化させる

< スケッチ(プログラム) >

void setup()
{
}

void loop()
{
 int i,j;

 for (i = 0; i <= 255; i++)
 {
  analogWrite(3, i);
  j = 255 - i;
  analogWrite(5, j);
  delay(10);
 }

 for (j = 0; j <= 255; j++)
 {
  analogWrite(5, j);
  i = 255 - j;
  analogWrite(3, i);
  delay(10);
 }
}

今度は、前のスケッチ“LED_PWM”を元にして新しいスケッチを入力するので、先ず、別名で保存してから入力しましょう。

 

メニューバーの“ファイル” → “名前を付けて保存”をクリックすると、前のスケッチ“LED_PWM”が保存されているフォルダが開いて、そのまま“保存”ボタンをクリックすると、

「それはムリです」という画面が出てしまいます。以前の記事「Arduino IDEの“スケッチ”そのファイル構造を知ろう」でも触れたように、スケッチは、スケッチ名と同じフォルダ名のフォルダを作成して、その中に保存されるので、

“保存する場所”の右側にある上向きの“↑”をクリックして、“ドキュメント” > “Arduino”フォルダ内に保存しましょう。

スケッチの記述は、

7行目で、「“i”と“j”を変数とする」

9行目は、前のスケッチそのままで、“for”文を使って「“i”の初期値は0、“i”が255以下の場合は11行目以下の“{ }”内を実行するが、そうでない場合(i=256)は、実行しない( → 17行目に進む)、“i”に1を足す」

11行目も、前のスケッチそのままで、「3番ピンに“i”を出力する」

12行目は、「変数“j”は、255 – “i”」

13行目は、「5番ピンに“j”を出力する」

14行目も、前のスケッチそのままで、「そのままで10ミリ秒待機する」

17行目は、9行目の“i”と“j”を入替えただけで、「“j”の初期値は0、“j”が255以下の場合は19行目以下の“{ }”内を実行するが、そうでない場合(i=256)は、実行しない( → 7行目に戻る)、“j”に1を足す」

19~22行目も、11~14行目の“i”と“j”、3番ピンと5番ピンを入替えただけです。

全体としては、“i”が255になるまで、11行目から14行目までを繰り返し、“i”が256になると、次の“j”が255になるまで、19行目から22行目までを繰り返して、“j”が256になると7行目に戻って、又同じことを繰返すというスケッチになります。

“保存”ボタンの次に“書込み”ボタンをクリックすれば、片方のLEDが2.56秒かけてゆっくり明るくなるともう片方が同じ時間で暗くなり、続く2.56秒では動作が逆転する様子を確認できるはずです。

動作例