- Arduinoによる電子工作の基本のキ
- LED(発光ダイオード)の点滅方法
- タイマー(内部カウント)の使い方
Arduinoを使った電子工作では、色々なものが作れます。
しかし、いきなり複雑なモノを作ろうとすると挫折もしやすいです。
そこで、Arduinoによる電子工作のはじめの一歩として、LEDを点滅させるというとってもシンプルなシステムがあります。
通称Lチカです。
今回の記事では、Arduinoを使ったLED(発光ダイオード)が点滅するシステムを紹介します。
LED点滅システムの構成
今回は、一定時間ごとに発光ダイオード(LED)がONとOFFを繰り返して点滅するシステムを作成します。
システムの構成図は下図のようになります。
まず、システムの入力として、Arduino内のタイマーを使用します。
タイマーは、LEDのONとOFFを切り替える時間を計測します。
そして、タイマーからの情報をもとに、ArduinoプログラムでLEDに送る信号(電圧)を作成します。
最後に、Arduinoから出力された信号がLEDに送られることで、LEDが点滅します。
このシステムを実現するため、次に電子回路とプログラムを作成します。
使用するArduinoとLチカ用電子回路
今回の記事では、下リンクのようなArduino Unoを用いたシステムを作成します。
Arduino Unoを持っていない方のため、おすすめのArduino Unoセットのリンク(Amazon)も貼っておきます。
ELEGOO Arduino UNO R3 スターターキット
このArduinoセットは、メインのArduino Uno基板の他に色々なセンサ等がセットになっています。
そのため、電子工作を始める方におすすめです。
もちろん他の種類のArduinoでも大丈夫です。
今回の記事では、システム入力に使用するタイマーとして、Arduino内に用意されている関数を使用します。
そのため、外付けで何かを付ける必要はありません。
また、出力のLEDについてもArduino基盤上に最初から用意されているLEDを使います。
なので、今回の記事で紹介するLEDを点滅させるシステムを実現するためには、Arduino本体基盤があれば良いです。
もちろん外付けのLEDを使っても、本記事で紹介する考え方でLチカは出来ます。
LEDを点滅させるプログラム
Lチカ用プログラムは、以前の記事で紹介したArduinoプログラムの基本構造を意識して作成していきます。
const int LED_PIN = 13;
void setup() {
// put your setup code here, to run once:
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
以下に、各構造(変数宣言、初期設定、メイン)について説明します。
変数の宣言
const int LED_PIN = 13;
まず変数宣言の部分で、出力するArduinoのピン番号を設定します。
今回は、Arduino基板上に設置されているLEDを使うために、ピン番号を13と宣言します。
setup関数で初期設定
void setup() {
// put your setup code here, to run once:
pinMode(LED_PIN, OUTPUT);
}
次に、setup関数で初期条件を設定します。
今回は、ピン13番を出力として使うために、pinMode関数を使って宣言をします。
pinMode関数を使うことで、指定のピンについて入力か出力に設定することが出来ます。
今回は、LED_PINと定義されている13番ピンを、出力(OUTPUT)として設定しています。
loop関数でメイン処理
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
そして、メインとなるloop関数を作成します。
loop関数内では、一定時間ごとにLEDのONとOFFを繰り返す信号を出力します。
まず、digitalWrite関数を使ってLED_PIN(ピン13番)をHIGHにしてLEDをONにします。
このLEDがONの状態を一定時間保持するために、wait関数を使用します。
wait関数は引数として入力した数字×ミリ秒(1000分の1秒)の間、次の処理の実行を待ちます。
今回は500としたので500ミリ秒(0.5秒)としました。
設定した時間が経過した後、digitalWrite関数を使ってLOWにしてLEDをOFFにします。
そして、また一定時間(0.5秒)を待つためにwait関数を用います。
loop関数では、この4行の命令文を繰り返します。
この4行のプログラムを繰り返すと
LEDがON → 待つ → LEDがOFF → 待つ → LEDがON → …
となることで、LEDを1秒周期で点滅させることが出来ます。
まとめ
今回の記事では、Arduinoを使ってLED(発光ダイオード)を点滅させるシステムの作り方を紹介しました。
紹介したようにLEDの点滅はとてもシンプルです。
しかし、入力や出力の考え方をしっかり理解すれば、同様の考え方で他にも色々なものが作れます。
あわせて読みたい