エレクトロニクス研究所
基礎知識約11分

LEDの点灯・制御の基礎:Arduinoで光らせる回路の作り方

電子工作の第一歩、LED制御の基礎を解説。回路設計、抵抗値の計算、PWMによる明るさ調整まで初心者向けに丁寧に説明します。

2026-03-29

LEDの基礎知識

LED(Light Emitting Diode)は発光ダイオードと呼ばれる半導体素子で、電流を流すと光を発します。電子工作で最もよく使われる部品のひとつで、点滅させる「Lチカ」は電子工作の入門として定番のプロジェクトです。

LEDには必ず極性があります。リード線(足)の長い方がアノード(陽極・プラス)、短い方が**カソード(陰極・マイナス)**です。また、LEDの内部を見ると、小さい方の金属片がアノード側です。アノードをプラス(電源側)、カソードをマイナス(GND側)につなぐことで電流が流れ、発光します。

一般的な5mm砲弾型LEDの仕様は以下の通りです。

順方向電圧(VF) 定格電流(IF)
約1.8〜2.2V 20mA
黄/橙 約1.8〜2.2V 20mA
約2.0〜2.5V 20mA
約3.0〜3.5V 20mA
約3.0〜3.5V 20mA

このVF(順方向電圧)と電源電圧の差が、抵抗で消費する電圧になります。

保護抵抗の計算方法

LEDに直接5Vをかけると過電流で即座に焼き切れます。必ず保護抵抗(電流制限抵抗)を直列に接続しなければなりません。抵抗値はオームの法則で計算できます。

計算式:

R = (電源電圧 - LEDの順方向電圧VF) / 定格電流IF

例1:ArduinoのデジタルピンにLEDを接続(赤LED)

R = (5V - 2.0V) / 0.020A = 150Ω

150Ωに最も近い規格値は150Ωまたは220Ωです。計算値より大きめの抵抗を選べばLEDの寿命が伸びます(少し暗くなりますが問題ありません)。

例2:青色LED(VF = 3.2V)の場合

R = (5V - 3.2V) / 0.020A = 90Ω

100Ωまたは150Ωを選択します。

Arduinoのデジタルピンから直接LEDを制御する場合、多くの入門記事では220Ω〜470Ωを使用しています。定格よりやや暗くなりますが、部品へのダメージを最小限にできるため、入門段階ではこの範囲の抵抗を選ぶのが無難です。

基本回路の作り方

ブレッドボードを使った最も基本的なLED点灯回路です。ブレッドボードの使い方を先に確認しておくとスムーズです。

必要な部品:

  • Arduino Uno
  • LED(色は任意)
  • 抵抗 220Ω(または330Ω)
  • ジャンパーワイヤー 2本
  • ブレッドボード

接続手順:

  1. Arduinoの9番ピン(PWM対応)からジャンパーワイヤーをブレッドボードへ引く
  2. ブレッドボード上で抵抗(220Ω)の一端を接続
  3. 抵抗のもう一端にLEDのアノード(長い足)を接続
  4. LEDのカソード(短い足)からジャンパーワイヤーでArduinoのGNDピンへ接続

この回路でデジタル制御(ON/OFF)とPWM制御(明るさ調整)の両方が試せます。

ArduinoコードでLEDを制御する

デジタル制御(ON/OFF)

const int LED_PIN = 9;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);  // 点灯
  delay(500);
  digitalWrite(LED_PIN, LOW);   // 消灯
  delay(500);
}

digitalWrite() はピンをHIGH(5V)またはLOW(0V)にする関数です。delay()の値(ミリ秒)を変えることで点滅間隔を調整できます。

PWMで明るさを調整する

PWM(Pulse Width Modulation、パルス幅変調)は、高速でON/OFFを繰り返すことで疑似的なアナログ値を作り出す技術です。ArduinoのPWMピン(ピン番号にチルダ~がついたもの)で使用できます。

const int LED_PIN = 9;  // 9番はPWM対応ピン

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // フェードイン
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(LED_PIN, brightness);
    delay(10);
  }
  // フェードアウト
  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(LED_PIN, brightness);
    delay(10);
  }
}

analogWrite(ピン番号, 値) の値は0(完全消灯)〜255(最大輝度)で指定します。このコードでLEDがゆっくり明るくなり、ゆっくり暗くなる「呼吸エフェクト」が実現できます。

複数のLEDを順番に点滅させる

const int LED_PINS[] = {9, 10, 11};  // 3つのLED
const int NUM_LEDS = 3;

void setup() {
  for (int i = 0; i < NUM_LEDS; i++) {
    pinMode(LED_PINS[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < NUM_LEDS; i++) {
    digitalWrite(LED_PINS[i], HIGH);
    delay(200);
    digitalWrite(LED_PINS[i], LOW);
  }
}

配列を使うことで複数のLEDをすっきりしたコードで管理できます。LEDを追加したい場合は配列に要素を追加し、NUM_LEDSの値を変更するだけです。

RGB LEDで色を作る

RGB LEDは赤(R)・緑(G)・青(B)の3色のLEDが一つのパッケージに入ったLEDです。各色の明るさをPWMで制御することで、任意の色を混色して表現できます。

RGB LEDにはアノードコモン(全色のアノードが共通)とカソードコモン(全色のカソードが共通)の2種類があります。入門用にはカソードコモン型が配線しやすいです。

const int RED_PIN   = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN  = 11;

void setColor(int r, int g, int b) {
  analogWrite(RED_PIN,   r);
  analogWrite(GREEN_PIN, g);
  analogWrite(BLUE_PIN,  b);
}

void setup() {
  pinMode(RED_PIN,   OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN,  OUTPUT);
}

void loop() {
  setColor(255, 0,   0);    // 赤
  delay(1000);
  setColor(0,   255, 0);    // 緑
  delay(1000);
  setColor(0,   0,   255);  // 青
  delay(1000);
  setColor(255, 165, 0);    // オレンジ(赤+緑の混色)
  delay(1000);
}

LEDの種類と選び方

種類 特徴 主な用途
5mm砲弾型LED 最も一般的、安価 インジケーター、Lチカ練習
3mm砲弾型LED 小型、狭い場所に最適 小型機器の表示灯
RGB LED 1素子で多色表現 演出照明、状態表示
NeoPixel(WS2812B) デジタル制御、複数連結可 テープLED、イルミネーション
表面実装(SMD)LED 基板直付け用、超小型 プリント基板の組み込み

特にNeoPixel(WS2812B)は、信号線1本で複数のLEDを独立して制御できる高機能なLEDです。ArduinoではFastLEDまたはAdafruit NeoPixelライブラリを使って簡単に制御できます。

よくあるトラブルと対策

LEDが点灯しない場合:

  1. LEDの向き(極性)を確認する(長い足がプラス側)
  2. 抵抗値が大きすぎないか確認する(10kΩ以上だと暗すぎて見えない場合がある)
  3. ブレッドボードの接触不良を疑う(別の行に刺し直す)
  4. ArduinoのGNDが接続されているか確認する
  5. pinMode() でOUTPUTに設定しているか確認する

LEDがすぐに切れた場合: 保護抵抗なしで直接接続した可能性が高いです。抵抗を必ず直列に入れてください。

まとめ

LED制御の要点をまとめます。

  • LEDには極性がある(長い足がアノード=プラス側)
  • 保護抵抗は必須。オームの法則で計算、220〜470Ωが入門の目安
  • デジタル制御には digitalWrite()、明るさ調整には analogWrite() を使う
  • PWMピン(チルダ〜付き)でアナログ的な制御が可能
  • RGB LEDで混色すると多彩な色表現ができる

LEDの制御をマスターしたら、次はセンサーの値によってLEDの色や明るさを変える応用へ進んでみましょう。センサーについてはセンサーの種類と選び方ガイドを参考にしてください。

よくある質問

Q. LEDに抵抗が必要な理由は何ですか?

LEDは電流を制限しないと過電流で焼き切れます。オームの法則で必要な抵抗値を計算し、保護抵抗を必ず直列につなぎましょう。5V回路で一般的なLEDなら220Ω〜470Ωが目安です。

Q. LEDの向きを間違えると壊れますか?

LEDには極性(プラスとマイナス)があります。逆につないでも通常は壊れませんが、点灯しません。足の長い方(アノード)をプラス側に接続します。

Q. PWMで何ができますか?

PWM(パルス幅変調)を使うと、LEDの明るさを0〜100%で調整できます。ArduinoのanalogWrite()関数でPWM制御が可能で、フェードイン・フェードアウトなどの演出ができます。

Q. ArduinoのデジタルピンとPWMピンの違いは何ですか?

デジタルピンはHIGH(5V)とLOW(0V)の2値のみ出力できます。PWMピン(チルダ記号〜がついたピン)はanalogWrite()で0〜255の値を指定でき、疑似的なアナログ出力ができます。

この記事で紹介した商品

Arduino Uno R4 WiFi

¥3,500前後
Amazonで見る

LED 5mm 各色 100個セット

¥600前後
Amazonで見る

カーボン抵抗セット 1/4W(各種)

¥500前後
Amazonで見る