Arduino のLED制御プログラム

Arduinoの用語ではプログラムのことを「スケッチ」と呼びます。

たとえば、LEDを点滅するプログラムの基本形はとても簡単です。

開発環境をインストールすると、たくさんのサンプルプログラムが付いています。サンプルは「ファイル」メニューのなかにあります。

次は、サンプルプログラム中の LEDを点滅するプログラムです。

これ以上のことはこれだけではできませんが、ディジタル制御の出力信号を出すには、具体的にどうするのかが、これで理解できると思います。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
/*
 Blink
 Turns on an LED on for one second, then off for one second, repeatedly.
 This example code is in the public domain.
*/

int led = 13; // Pin 13 has an LED connected on most Arduino boards.

// the setup routine runs once when you press reset:
void setup() {
 pinMode(led, OUTPUT); // initialize the digital pin as an output.
}

// the loop routine runs over and over again forever:
void loop() {
 digitalWrite(led, HIGH); // turn the LED on
 delay(1000);     // wait for a second
 digitalWrite(led, LOW); // turn the LED off
 delay(1000);     // wait for a second
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ここには、マジックナンバー13があります。プログラム中の説明にあるように、ほとんどのArduino基板の13番ピンはLEDにつながれています。


LEDをチカチカするだけではつまらないと思うかもしれません。

ある工業用途の装置向けに LED照明の制御をArdunino を使って実現した装置を収めたことがあります。

LED照明の大きさはそうでもありませんが、回路は大掛かりで数十個のLEDを使用し、複数に分割したブロックごとに点灯します。1つのブロックで何個もLEDを使うので直列接続のLEDアレイは高い電圧でないと点灯しません。

トランジスタを使った専用のLEDドライバを Arduinoで制御します。複数のブロックを制御するArduino の出力ポートはそれに見合う数を使います。

この装置はPWM (Puse Width Modulation) 信号により明るさを調節しますが、信号を発生する部分はArduinoとは別にあります。デューティー比は別のコントローラが制御し、必要に応じて自動で明るさを変えます。

デューティー比を狭くすると暗くなり、広くすると明るくなります。

Arduinoの出力ポートから出る信号と、明るさを調節したPWM信号はゲートを通し LEDドライバに出力します。ゲートはPWM信号で明るさを調節するためです。

いろいろと複雑ですが、出力の部分はサンプルプログラムとまったく同じ原理で動作します。