2個交互にLチカさせてみる【マイコンLチカ道場 Arduino編 0-2】

2個のLEDを交互に点滅 Arduino
当サイトのリンクにはアフィリエイト広告が含まれています。
スポンサーリンク

はじめに

このページは「マイコンLチカ道場 Arduino編」の「0-2:2個交互にLチカ」に対応するページです。
一番簡単なLチカを少し応用して動作させてみます。

スポンサーリンク

回路図・接続図

引き続き、ボードはArduino Uno Rev.3を使います。前回の回路に追加で、今回は赤色のLEDを11番のピンに追加しています。

回路図
回路図
ブレッドボード接続イメージ
ブレッドボード接続イメージ

赤色LEDの電流制限抵抗について

今回追加で赤色LEDを使用しますが、抵抗は前回の青色と同じ220Ωとしています。せっかくなので、今回使用する赤色LEDのIF-VFを確認してみました。いつ何処で買ったのかも覚えていないシャープ製の「GL5PR44」というLEDです。古いので、今どきの高輝度タイプではなさそうです。

IF(mA)VF(V)
No.1
VF(V)
No.2
VF(V)
No.3
VF(V)
AVE
0.11.7501.7421.7451.746
11.8231.8191.8191.820
21.8541.8501.8501.851
31.8771.8731.8731.874
51.9151.9091.9091.911
101.9921.9841.9831.986
152.0612.0492.0472.052
202.1262.1102.1092.115

前回使用した青色LEDとのIF-VF特性を比較したグラフを下記に載せておきます。
今回LEDにはI=(5-2)/220×1000≒13.6mAくらい流してますが、それでも青色LEDと比較するとこちらの方がだいぶ暗いです。LEDの種類によっても明るさが異なるので、混ぜて使う場合は注意が必要ですね。

赤色LEDと青色LEDのIF-VF特性

プログラムを書いてみる

また前置きが長くなってしまいましたが、これは正直今回のプログラムが簡単だったためです。
前回のLチカのスケッチに、ピン11をコピペして追加します。交互に点滅させるので、ONとOFFの状態は逆にしておきます。

void setup() {
  pinMode(11, OUTPUT); //LED_RED
  pinMode(12, OUTPUT); //LED_BLUE
}

void loop() {
  digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(11, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(11, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
}

これだけで、2個のLEDを交互にLチカさせることができました。

LEDを2個交互に点滅

この時の2個のLED両端の電圧波形をそれぞれオシロスコープで見てみました。一秒間隔で、2個のLEDが交互にON・OFFしていることが確認できます。赤色LEDのVFはちゃんと2Vあたりです。

2個のLED両端の電圧波形

また、ピン番号をいちいち数箇所変更するのが面倒だったり、数が増えてくると変え忘れたり、間違えたりする心配があると思います。初めのサンプルスケッチで「LED_BUILTIN」が「13」となっていたように、ピン「11」,「12」を名前を付けて定義してみました。
const修飾子をつけることで、その数値をプログラム中で書き換え出来なくする効果があるようです。

const int LED_BLUE = 12;
const int LED_RED = 11;

void setup() {
  pinMode(LED_BLUE, OUTPUT);
  pinMode(LED_RED, OUTPUT); 
}

void loop() {
  digitalWrite(LED_BLUE, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_RED, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  digitalWrite(LED_BLUE, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(LED_RED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
}

このプログラムでも、さっきとまったく同様に動くことが確認できました。
LEDを接続するピン番号を変えたりする場合、1箇所のみの変更でよいので、こちらの方が便利そうですね。

まとめ

2個交互にLチカさせることに成功しました。前回のプログラムからの小変更で、かなり簡単にLチカさせることが出来ました。また、const intでピン番号の定義を行ってみました。引き続きもっと難しいLチカに挑戦していきましょう。

このページの実験は下記の製品で試すことが出来ます。
タイトルとURLをコピーしました