スポンサーリンク

Arduino / Lチカはどうしてチカチカするのか

Arduino を初めて使うときに誰もがやってみるのが「Lチカ」でしょう。LED と抵抗器をつないで、サンプルスケッチの Blink を書き込むと、LED は 1秒毎に点滅します。
とても簡単なテストですけど、どうして LED が点滅するんだろうかと、あらためて考えてみました (^_^;)

ソース回路 − 電流が流れ出る使い方

左の回路図は、Lチカを試すときによく見る基本的な回路です。

スケッチによって 13 番ピンが HIGH になると、13 番ピンから電流が流れ出て LED が点灯します。このように電流が流れ出てくる回路を「ソース回路」と呼びます。
LED を点灯させる電流は、電源 Vin から Arduino に入って 5V になり、13 番ピンから抵抗器と LED を通って GND へ流れていきます。
13 番ピンが HIGH (5V) になると電流が流れて点灯し、LOW (0V) のときは流れませんから消灯します。

シンク回路 − 電流が流れ込む使い方

あまり見かけませんが、左図のように LED をつなぐこともできます。

この場合は、13 番ピンが LOW になったときに、13 番ピンへ電流が流れ込んで LED が点灯します。このように電流が流れ込む回路を「シンク回路」と呼びます。
LED を点灯させる電流は、電源 Vin から Arduino 内で 5V となり、5V ピンから抵抗器と LED を通って 13 番ピンに流れ込み、再び Arduino を通って GND へと流れます。
13 番ピンが HIGH (5V) のときは電流が流れませんから消灯していますが、LOW (0V) になると電流が流れて点灯します。ソース回路とは逆の動きをすることがわかります。

等価回路 − Arduino の中をわかりやすく表すと

Arduino の中がどうなっているのか。単純に書くと左図のようにスイッチが 2 個つながっているんです。こういうふうに機能を単純に表した回路を「等価回路」と言います。

SW1 を ON 、SW2 を OFF にすると 13 番ピンは HIGH (5V) になります。SW1 を OFF 、SW2 を ON にすれば 13 番ピンは LOW (0V) です。このようになっているので、ソース回路としてもシンク回路としても利用することができます。
ちなみに、SW1 と SW2 が同時に ON になってしまうと電源がショートしてしまうので、両方同時に ON にできないような仕組みになっています。

SW1 と SW2 の ON-OFF はスケッチで指示してやります。
digitalWrite(13,HIGH) とすると SW1 が ON 、SW2 が OFF になり、13 番ピンは HIGH (5V) になります。degitalWrite(13,LOW) ならば SW1 が OFF 、SW2 が ON となり、13 番ピンは LOW (0V) です。

LED 2 個が交互に点滅する Lチカ回路

等価回路を眺めていたら、ソース回路とシンク回路を一緒に使うことを思いつきました。それが左の回路です。
仕組みがわかってしまうと簡単に理解できますね。2 つの LED が交互に点滅します。

Lチカはどうしてチカチカするのか

Arduino の 13 番ピンの中にはスイッチの働きをする回路がある。そのスイッチをスケッチで操作することで、13 番ピンが電源 (5V) 側につながったり、GND (0V) 側につながったりするので、LED が点灯したり消灯したりする。
って、そんなわけでした。

ちなみに、13 番ピンなどのデジタルピンをこうした働きをするようにするのが pinMode(pin番号, OUTPUT) で、スイッチを操作するのが digitalWrite(pin番号, HIGH) や digitalWrite(pin番号, LOW) ですね。

タイトルとURLをコピーしました