戻る

ArduinoでPWMを使ってLEDをフェードさせる – 初心者向けチュートリアル

はじめに

PWM(パルス幅変調)を使った初めてのプロジェクトへようこそ!このチュートリアルでは、LEDを消灯状態から明るく、そして再び消灯へと滑らかにフェードさせるシンプルな回路を組み立てます。これは、analogWrite()を使って明るさやモーター速度、平均電圧の変化に応答するあらゆるデバイスを制御する方法を学べる、Arduino初心者向けの定番プロジェクトです。

今回は、SPICE準拠のアナログサポートを備えたブラウザ内回路シミュレーター Velxio を使用します。ハードウェアは不要で、ブラウザだけでOK!コードを編集して結果を即座に確認できます。

Velxioシミュレーターキャンバス上のfade-led回路図

回路の解説

このプロジェクトで使用する部品と配線を見ていきましょう。

部品

部品数量備考
Arduino Uno1動作の頭脳
LED(任意の色)1今回は青色LEDを使用
抵抗(220 Ω)1電流制限抵抗(回路図には非表示ですが推奨)
ジャンパーワイヤー2接続用

配線

  1. LEDアノード(長い足) → Arduinoの9番ピン(PWM対応ピン)に接続。
  2. LEDカソード(短い足) → ArduinoのGNDに接続。

重要: LEDを焼損から防ぐため、必ず電流制限抵抗(通常220 Ω~1 kΩ)をLEDと直列に接続してください。VelxioシミュレーターではLEDモデルに内部抵抗が含まれていますが、実際の回路では必ず追加する必要があります。

配線の詳細は以下の通りです:

たった2本の接続だけです。Arduinoの9番ピンはPWM信号を出力でき、これを使ってLEDの明るさを変化させます。

Velxio Monacoエディター上のfade-ledソースコード

コードの解説

Velxioでコードエディターを開きます。以下のArduinoスケッチが表示されます:

// Fade LED with PWM
// Smoothly fade LED brightness

const int LED_PIN = 9; // PWM pin

int brightness = 0;
int fadeAmount = 5;

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

void loop() {
  analogWrite(LED_PIN, brightness);

  brightness += fadeAmount;

  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }

  delay(30);
}

動作の仕組み

重要な概念

よくある問題とデバッグのヒント

  1. LEDが点灯しない?

    • LEDの接続が正しいか確認(アノードを9番ピン、カソードをGNDに)。
    • コードがアップロードされているか確認(ツールバーのRunボタンをクリック)。
    • LED_PINが実際に使用しているピンと一致しているか確認。
  2. LEDが最大輝度のまま?

    • PWM対応ピン(Unoでは3、5、6、9、10、11)を使用しているか確認。13番ピンはPWM非対応。
    • digitalWrite()ではなくanalogWrite()が呼び出されているか確認。
  3. フェードが速すぎる、または遅すぎる?

    • delay(30)の値を調整。大きいほどフェードが遅くなります。
    • fadeAmountを変更してステップサイズを調整(例:1で非常に滑らか、10でより速く)。
  4. シミュレーターが応答しない?

    • キャンバスツールバーのResetボタンを使用。
    • 必要に応じてページをリフレッシュ。

コンパイルと実行のコントロールがあるVelxioエディターツールバー

発展課題

基本的なフェードをマスターしたら、以下のチャレンジに挑戦してみましょう:

  1. 複数のLED: 10番と11番ピンにさらに2つのLEDを追加。順番に、または異なる速度でフェードさせる。
  2. ボタン制御: プッシュボタンを追加してフェードの開始/停止を制御。
  3. ポテンショメーターによる速度制御: ポテンショメーターを使ってフェード速度を調整(delay(30)をアナログ入力から読み取った変数に置き換え)。
  4. RGB LED: RGB LEDを使用し、3つのPWMピンを制御して異なる色にフェード。
  5. シリアルモニター: 明るさの値をシリアルモニターに表示してデバッグ。

実際に試してみよう!

実際の動作を確認してみませんか?Velxioでライブサンプルを開いてください:

👉 Fade LEDのサンプルを起動

コードの編集、フェード速度の変更、新しい部品の追加も可能です。シミュレーターはブラウザ内で完全に動作し、ダウンロードやセットアップは不要です。

それでは、楽しいフェード体験を!


共有:
David Montero

執筆者

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

関連記事


前の記事
シリアルHello World:初めてのArduino通信プロジェクト
次の記事
ボタンで制御するLED:初めてのArduino入力プロジェクト