ロボット技術

Arduinoでイルミネーションを作ろう!複数の外付けLEDを制御する

本記事で学べること
  • Arduinoによる外付けLEDの制御回路
  • 複数のLEDを制御する方法
  • タイマーによる制御信号の作り方

 

クリスマスの時期にツリーを彩るイルミネーションはとてもキレイです。

ArduinoとLED(発光ダイオード)を使うことで、イルミネーションを作ることが出来ます。

 

以前の記事では、Arduino基板上のLEDを点滅させる方法を紹介しました。

ArduinoでLEDをチカチカと点滅させよう! Arduinoプログラムの第1歩 Arduinoを使った電子工作では、色々なものが作れます。 しかし、いきなり複雑なモノを作ろうとすると挫折もしやす...

 

今回の記事では、Arduinoによる外付けLEDを使ったイルミネーションの作り方を紹介します。

 

 

使用するArduinoと電子部品

今回の記事では、Arduino UnoとLED(発光ダイオード)、抵抗器を使用します。

Arduino Uno Rev3

Arduino Uno Rev3

上の写真をクリックするとリンク先(Amazon)に飛びます。

電子工作キット

今回の記事で使用するLEDを含めた電子工作キットはこちら。

ELEGOO Arduino UNO R3 スターターキット

このArduinoセットは、メインのArduino Uno基板の他に色々なセンサ等がセットになっています。

本記事で使用するLEDと抵抗器はもちろん、モータや赤外線通信関係まで色々と入ってお得です。

 

 

Arduinoイルミネーションの構成図

今回は、好きなタイミングで複数の外付け発光ダイオード(外付けLED)を点灯させるシステムを作成します。

 

システムの入力には、Arduinoの関数を用いたタイマー(カウンター)を用います。

 

タイマーで計測された時間から、LEDの点灯のタイミングを決めます。

そして、決められたタイミングでそれぞれのLEDにON/OFFの信号を送ります。

 

その結果、Arduinoから出力された信号により、Arduinoに接続された外付けLEDが点灯します。

 

このイルミネーションシステムを実現するため、電子回路をプログラムを作成します。

 

 

複数の外付けLED制御用の電子回路

今回の記事では、外付けLEDを8個用いてイルミネーションを作ります。

それぞれのLEDはArduinoのピンと抵抗を介してGNDに接続します。

LEDのアノード側をArduinoに、カソード側を抵抗器(GND)に接続しています。

そのため、Arduinoの出力ピンがHIGHの時はLEDがON、LOWの時はLEDはOFFとなります。

 

 

LEDイルミネーション用のプログラム

以前の記事で紹介したArduinoプログラムの基本構造を意識してLEDイルミネーションのプログラムを作成します。

本記事で紹介するLEDイルミネーションでは、接続した8個のLEDが順々に流れるように光るプログラムを作成します。

 

今回は内容を理解してもらうことに重点を置いたため、プログラムがかなり冗長(長々と)になりました。

 

const int LED1 = 2;
const int LED2 = 3;
const int LED3 = 4;
const int LED4 = 5;
const int LED5 = 6;
const int LED6 = 7;
const int LED7 = 8;
const int LED8 = 9;
const int LED_TIME = 100;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED1, HIGH);
  delay(LED_TIME);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(LED_TIME);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, HIGH);
  delay(LED_TIME);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  delay(LED_TIME);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, HIGH);
  delay(LED_TIME);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  delay(LED_TIME);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, HIGH);
  delay(LED_TIME);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  delay(LED_TIME);
  digitalWrite(LED8, LOW);
}

 

もちろん、もっと短く(数行程度で)書くことは出来ますが、分かりやすさを優先しましたのでご容赦ください。

 

使用するグローバル変数の宣言

const int LED1 = 2;
const int LED2 = 3;
const int LED3 = 4;
const int LED4 = 5;
const int LED5 = 6;
const int LED6 = 7;
const int LED7 = 8;
const int LED8 = 9;

const int LED_TIME = 100;

 

変数の宣言として、LEDを接続するArduinoのピン番号を設定します。

今回は2番ピンから9番ピンまでの8個の出力ピンを使用します。

これらのピンを指定しやすくするため、それぞれのピン番号をLED1からLED8と定義します。

 

また、LEDが光る時間をLED_TIMEとして100と設定しています。

詳しくはメインのloop関数で使用する際に説明します。

 

初期条件をsetup関数で定義

void setup() {
  // put your setup code here, to run once:
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
}

 

次にsetup関数にて、LEDの制御に使用するピンを出力ピンとして設定します。

今回は、ピン2番から9番まで(LED1からLED8まで)を出力(OUTPUT)として宣言を行います。

 

また、電源をいれた直後はすべてのLEDをOFFにしたいと考えています。

そのため、dijitalWrite関数を使ってすべてのピンにLOWを出力して、LEDをOFFにしています。

 

LEDイルミネーションをloop関数で実行

そしてloop関数の中でLEDの点灯タイミングを決め、LEDに信号を出力します。

今回は一定時間ごとにLEDが流れるように点灯するというパターンを作成します。

ここは、自由に決めてもらってオッケーです。

センスを爆発させてください!

 

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED1, HIGH);
  delay(LED_TIME);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(LED_TIME);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, HIGH);
  delay(LED_TIME);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  delay(LED_TIME);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, HIGH);
  delay(LED_TIME);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  delay(LED_TIME);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, HIGH);
  delay(LED_TIME);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  delay(LED_TIME);
  digitalWrite(LED8, LOW);
}

 

LED1から順にLEDをONにして、一定時間(LED_TIME=100ミリ秒)待って、LEDをOFFにするという流れをLED8まで行っています。

 

このLoop関数で設定したパターンを繰り返すことでイルミネーションが出来上がります。

 

 

まとめ

今回の記事では、Arduinoで複数の外付けLED(発光ダイオード)を点滅させるシステムによるイルミネーションの作り方を紹介しました。

 

ArduinoによるLEDの点滅方法を理解することで、簡単に綺麗なイルミネーションを作ることが出来ます。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です