はじめに
このページは「マイコン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.1 | 1.750 | 1.742 | 1.745 | 1.746 |
1 | 1.823 | 1.819 | 1.819 | 1.820 |
2 | 1.854 | 1.850 | 1.850 | 1.851 |
3 | 1.877 | 1.873 | 1.873 | 1.874 |
5 | 1.915 | 1.909 | 1.909 | 1.911 |
10 | 1.992 | 1.984 | 1.983 | 1.986 |
15 | 2.061 | 2.049 | 2.047 | 2.052 |
20 | 2.126 | 2.110 | 2.109 | 2.115 |
前回使用した青色LEDとのIF-VF特性を比較したグラフを下記に載せておきます。
今回LEDにはI=(5-2)/220×1000≒13.6mAくらい流してますが、それでも青色LEDと比較するとこちらの方がだいぶ暗いです。LEDの種類によっても明るさが異なるので、混ぜて使う場合は注意が必要ですね。
プログラムを書いてみる
また前置きが長くなってしまいましたが、これは正直今回のプログラムが簡単だったためです。
前回の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チカさせることができました。
この時の2個のLED両端の電圧波形をそれぞれオシロスコープで見てみました。一秒間隔で、2個のLEDが交互にON・OFFしていることが確認できます。赤色LEDのVFはちゃんと2Vあたりです。
また、ピン番号をいちいち数箇所変更するのが面倒だったり、数が増えてくると変え忘れたり、間違えたりする心配があると思います。初めのサンプルスケッチで「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チカに挑戦していきましょう。