You are here

光あれ

電子工作で光ものといえばLEDですね。電子工作の基礎の基礎、LEDの点灯実験をしましょう。

LEDには2本の足があり、それぞれアノード(足の長いほう)とカソードと呼ばれます。電流はアノードからカソードに流れ、発光します。このため、アノードが+側、カソードが?側になるように配線して利用します。

LEDをMCUなどに接続して発光制御する場合、アクティブローとアクティブハイの2種類の接続法があります。LEDのアノード(+側)をVCCに、カソード(?側)をMCUに接続する方法はアクティブローとなり、LEDのアノード(+側)をMCUに、カソード(?側)をGNDに接続する方法はアクティブハイとなります。なお、LEDの接続には、LEDに電源が流れすぎないように、適切な値の抵抗を直列に入れます。

アクティブローの接続方法の場合には、MCUのポートに0を出力するとLEDが点灯し、アクティブハイの接続方法の場合には、1を出力するとLEDが点灯します。

Arduino DiecimilaやArduino Nanoでは、ディジタルの13番ピンに、アクティブハイでLEDが接続されています。一方、REDUINO-NANOとREDUINO-GL128は、LEDがディジタルの3番ピンと5番ピンにそれぞれ接続されているのと、両者とも古式にのっとり(オープンコレクタやオープンドレインでLEDを駆動する場合に準じた)アクティブローで接続されているため、既存のスケッチでLEDを利用する際には少し注意が必要です。

REDUINO-NANO

REDUINO-NANOの基板に標準で実装されているLEDは、Arduinoのディジタル3番ピンに接続されています。

それでは、基板上に標準で実装されているLEDを点滅させる処理をスケッチしてみましょう。

setup()関数では、LEDの接続ピンを出力に設定します。loop()関数では、LEDが接続されたピンにHIGHとLOWを相互に出力し、出力後はdelay()関数で一定時間待つという簡単な処理を行っています。loop()関数は無限に繰り返し実行されるため、LEDが接続されたピンはHIGHとLOWが延々と繰り返され点滅することになります。

HIGHとLOWでdelay()関数による待ち時間が異なるので、アクティブローとアクティブハイでは、点滅の見え方が異なります。REDUINO-NANOはアクティブローなので、HIGH(消灯)のとき待ち時間が長くLOW(点灯)のときまち時間が短いということで、ちょっと光っては消えた時間が長くちょっと光っては消えた時間が長く。。。という点滅を繰り返すはずです。逆に、アクティブハイになっている場合には、点灯時間が長くちょっと消えて。。。という繰り返しに変わります。

REDUINO-NANO:全弾装備

REDUINO-NANOの全拡張端子(アナログ入力用CN4は除く)にもLEDを接続して、点灯実験を行ってみます。

このスケッチでは、4本のLEDを点滅させるので、LEDのピン番号を配列に入れ、まとめて処理を行えるようにしてみました。

端子のピンの配置の制約で、標準装備のLEDとCN3に接続したLEDはアクティブロー、CN5とCN6に接続したLEDはアクティブハイとなり、それぞれのグループで点滅の状態が反転するのが見て取れます。

REDUINO-GL128

REDUINO-GL128の基板に標準で実装されているLEDは、Arduinoのディジタル5番ピンに接続されています。したがって、REDUINO-NANO用の最初のスケッチのledPinの設定を5に変えるだけで、点滅させることが出来ます。

開発ソフト: 
チップファミリー: 
MCUチップ: 
技術: