オープンソースプロジェクト
FastLED/FastLED avatar
FastLED/FastLED

FastLEDはマイコンのLED出力を表現と制御に分けて扱う

Arduino 上のカラー LED アニメーション用の FastLED ライブラリ。質問やサポートのリクエストは、FastLED Reddit コミュニティに直接送ってください。私たちは、ライブラリのバグや拡張機能を追跡するためだけに github の「問題」を使用したいと考えています。

スター 7,490フォーク 1,757C++MIT

ひと目でわかる

これは何?
C++製のFastLEDは、Arduino系のマイコンから多数のLEDへ色とアニメーションを送り、複数のチップセットとボードを共通APIで扱う。
誰に向いている?
FastLEDは、Arduino、ESP32、TeensyなどでLED演出を作り、チップセットの違いをライブラリ側へ寄せたい開発者に向く。READMEの台数や速度はプロジェクト側の説明であり、配線、電源、更新周期を含む実機条件を保証する数字ではない。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

最小スケッチが示すAPIの入口

FastLED は、リポジトリの説明によると、Arduino 向けカラー LED アニメーションの C++ ライブラリである。README は完全な最小スケッチから始まる。FastLED.h をインクルードし、60 個の LED の CRGB 配列を宣言し、setup() で FastLED.addLeds<WS2812, 6>(leds, NUM_LEDS) を呼び、loop() で最初の LED を赤と青の間で切り替える。この例は Arduino 標準の 2 つの関数だけを使い、条件付きコンパイルもプラットフォーム判定もない。ライブラリの見出しは組み込みと Arduino のためのユニバーサル LED ライブラリを自称し、ハイエンドデバイスで 30,000 個以上の LED を駆動し、1 ドル未満の ATtiny チップで動作し、ESP32 と Teensy でバックグラウンドレンダリングを行い、ほぼすべての LED チップセットをサポートすると主張している。README は docs.arduino.cc のページもリンクしており、FastLED が 2 番目に人気のある Arduino ライブラリであるとしているが、この記事はその主張を独立に検証していない。

FastLEDのCRGB配列とFastLED.show()という例は、色データの準備と物理LEDへの送信を分ける入口になる。READMEは8ビット演算、グローバル輝度、メモリ効率を説明するが、電源設計や配線の問題をライブラリが解決するとは書いていない。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、最小スケッチが示すAPIの入口を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。最小スケッチが示すAPIの入口に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

50以上の環境という主張を読む

README はサポートプラットフォームをカテゴリ別に列挙している。Arduino ファミリは Uno、Nano、Mega、Due、Giga R1、R4。ESP32 シリーズは ESP32、S2、S3、C3、C6、H2、P4。Teensy は 3.0、3.1、4.0、4.1、OctoWS2811 対応の LC。ARM ボードは STM32、NRF52、Apollo3、Silicon Labs。特殊ターゲットは Raspberry Pi、WebAssembly、x86。ビルドステータスバッジは ESP32 の QEMU エミュレーションテスト、AVR の AVR8JS エミュレーションテスト、および複数のコアプラットフォームのバイナリサイズチェックをカバーしている。README は制限についても率直で、ATtiny4313 はメモリが限られ、Apollo3 サポートはベータであり、NRF52 XiaoBLE ボードの mbed エンジンは Arduino.h に対してコンパイルできないが、その理由は README に説明されていない。

背景レンダリングやオーディオ反応の例を使う場合は、LED更新と入力処理の時間関係を測る必要がある。対応チップセットの一覧は広いものの、ボードのピン、信号電圧、ストリップの長さを含む構成で動くかは、対象機材を使ったスケッチで確かめる。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、50以上の環境という主張を読むを導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。50以上の環境という主張を読むに関する版、入力、出力を残せば、同じ確認を後からやり直せる。

コントローラー層と出力層の分離

README によると、FastLED のドライバは 2 層に分かれている。プラットフォームに依存しないチャネルドライバが波形生成、バッファリング、スケジューリングを担当し、薄いプラットフォーム固有のペリフェラル層がビットストリームを送信するだけである。この分割があるからこそ、自動化されたドライバ開発フレームワークが成り立つ。複雑なロジックは単体テストでき、ハードウェア固有のコードはデータシートと照合できるほど小さい。性能面では、README は並列出力記録を挙げている。Teensy 4.1 で 50 本の並列ストリップ、Teensy 4.0 で 42 本、ESP32DEV で I2S 経由 24 本と RMT 経由 8 本、ESP32-S3 で LCD または I2S 経由 16 本と RMT 経由 4 本。ObjectFLED は Teensy 4.x のデフォルトドライバとされ、マクロで無効にして従来のクロックレスドライバに戻せる。README には高並列配線の実践リストもあり、スター接地、データ線とグラウンドのツイストペア、74HCT245 などのバッファによるレベルシフト、バッファ出力直後の 33 から 220 オームの直列抵抗が含まれる。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、コントローラー層と出力層の分離を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。コントローラー層と出力層の分離に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

チップセットを実行時に切り替える

FastLED 3.10.4 は ESP32 で実行時ドライバ制御を導入した。グローバルな FastLED オブジェクトに、排他ドライバを設定し、名前付きドライバを有効または無効にし、ドライバ状態を照会するメソッドが追加された。README は、この API はすべてのプラットフォームでコンパイルできるが、完全なマルチドライバ切り替えは ESP32 限定であり、非 ESP32 プラットフォームでは安全な no-op 実装になると述べている。ドライバメソッドには setExclusiveDriver、setDriverEnabled、isDriverEnabled、getDriverInfo があり、登録済みドライバを反復して名前、優先度、有効状態を表示するコード例が添えられている。3.10.3 は ARM M0/M0+ ボードで UCS7604 のベータサポートを追加した。UCS7604 は 16 ビット RGBW チップセットである。また実験的な ESP32-P4 RGB LCD ドライバも追加され、P4 専用の RGB LCD ペリフェラルと DMA を使って最大 16 本の並列 WS2812 ストリップを駆動できる。README はこのドライバがコード完成済みでレビュー済みだが、ESP32-P4 ボードの入手性が限られているためハードウェアでは未テストだと述べている。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、チップセットを実行時に切り替えるを導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。チップセットを実行時に切り替えるに関する版、入力、出力を残せば、同じ確認を後からやり直せる。

音声入力をアニメーションへ渡す

FastLED はオーディオ処理 API を含む。README の例は 1 行で INMP441 I2S マイクを作成し、ビート、バス、無音開始のコールバックを登録し、FastLED.show() が自動的にオーディオをポンプする。onBass コールバックは浮動小数点のレベル値を受け取り、サンプルコードはそれを 160 倍して HSV 色相にマッピングする。コールバックは onBeat、onBass、onSilenceStart で、onBeat はビート到着時に、onSilenceStart は無音開始時に発火する。サポートプラットフォームは I2S または PDM の ESP32 と Teensy である。README は、コードはすべてのプラットフォームでコンパイルされ、ハードウェアがない場所ではコールバックは単に不活性になると注記している。完全な API リファレンスは src/fl/audio/README.md を参照する。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、音声入力をアニメーションへ渡すを導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。音声入力をアニメーションへ渡すに関する版、入力、出力を残せば、同じ確認を後からやり直せる。

Cookbookとソースツリーの使い分け

README は、実デバイスを使ってハードウェアドライバを開発するための研究および検証フレームワークを文書化している。AI エージェントがコードを編集し、ファームウェアをフラッシュし、受信デバイスを使って期待されるタイミングに対する LED 信号精度をスコアリングし、ドライバが動作するまで反復する。README のシェルセッション例はリポジトリをクローンし、claude を実行し、ドライバが動作するまで停止しないという指示を与え、およそ 1 時間の反復を想定している。同じ例のハードウェア準備手順は、esp32dev のピン 1 とピン 2 をはんだ付けし、USB でコンピュータに接続することである。フレームワークの目標は、ドライバ開発をデータシートの行ごとの読解から自動化された反復に変えることであり、前述の二層ドライバ分割によって機能すると README は説明している。README は claude コマンド以外に必要なソフトウェア依存関係を明示していない。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、Cookbookとソースツリーの使い分けを導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。Cookbookとソースツリーの使い分けに関する版、入力、出力を残せば、同じ確認を後からやり直せる。

MITライセンスと実機検証

README は 3 つのインストール経路を挙げている。Arduino IDE のライブラリマネージャ、platformio.ini に lib_deps = fastled/FastLED を書く PlatformIO、コマンドラインのパッケージマネージャインストールである。またクックブック、fastled.io/docs の API リファレンス、Doxygen ドキュメント、100 以上のサンプルスケッチを指している。Web コンパイラを使えばブラウザでサンプルをテストでき、Arduino と PlatformIO の公式スターターテンプレートもリンクされている。コミュニティサポートは Reddit の r/FastLED に向けられ、リポジトリの説明はユーザーに GitHub issues をライブラリのバグと機能強化の追跡に使うよう求めている。プロジェクトは MIT ライセンスであり、使用、コピー、変更、マージ、公開、配布、再ライセンス、販売の権利を許諾し、ソフトウェアは保証なしで現状のまま提供されると述べている。README はセキュリティポリシー、正式なサポートチャネル、具体的な本番結果を確立していない。

FastLEDはマイコンのLED出力を表現と制御に分けて扱うでは、MITライセンスと実機検証を導入判断の確認対象として切り分け、READMEに明記された範囲と実際の環境で変わる部分を別々に記録する。MITライセンスと実機検証に関する版、入力、出力を残せば、同じ確認を後からやり直せる。

編集部の結論

FastLEDは、Arduino、ESP32、TeensyなどでLED演出を作り、チップセットの違いをライブラリ側へ寄せたい開発者に向く。READMEの台数や速度はプロジェクト側の説明であり、配線、電源、更新周期を含む実機条件を保証する数字ではない。採用前に使うボードとLED型番を固定し、FastLED.addLedsの設定、電源容量、非同期処理の入力遅延を小さなスケッチで検証する必要がある。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート