LEDタワーアート:プログラマブルRGBシリンダー型ディスプレイの設計と制作
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| APA106 プログラマブルRGB LED(8mm) | 288個 | 12リング × 24個 |
| Arduino UNO | 1 | |
| 22ゲージ 錫メッキ銅線 | 1巻 | 電源レール配線用 |
| 直径8インチ(約203mm)金属リング | 12個 | リングベース用 |
| 12インチ(約305mm)アクリルロッド | 10本 | リング連結・構造材 |
必要な工具
- はんだごて(40W以上推奨、金属リング加熱用に高温必要)
- ホットボンドガン
- Blu-Tack(再剥離可能粘着剤、スペーサー固定用)
- クリップオンヒートシンク(LEDリード保護用、必須)
使用するアプリとオンラインサービス
- Arduino IDE
プロジェクト概要
「円柱と平面の交差で生まれる曲線」から着想を得た、円筒形のプログラマブルLEDタワーです。これまでLEDキューブをいくつか制作してきましたが、ハード・ソフト両面で異なるアプローチに挑戦したく、キューブと同等の表現力を持ちながら全く異なる幾何学的形状を目指しました。
APA106 LEDを選んだ理由
- シフトレジスタ不要、データ線2本のみで全LED制御可能
- 割り込みサービスルーチン(ISR)やレイヤー多重化不要、常時点灯型
- 通常のRGB LEDより高価だが、ハード・ソフト両面で圧倒的に扱いやすい
構造設計
- 12段のリング構造:各リング直径8インチ、24個のLEDを等間隔(約1インチ間隔)に配置
- リング間隔1インチ:上下方向も1インチピッチで、立方格子に近い配置
- アクリルロッドで連結:6本のロッドで全リングを剛結
- 消費電力:理論最大 288個 × 60mA = 約17.3A だが、実運用では輝度10%程度でUSB給電でも動作。別途電源なら2A程度で十分
制作手順
1. LEDのリード成形

各LEDのリードを図のように成形。GNDリード先端に小さな折り曲げを入れ、識別とリングへのハンダ付けを容易にします。1リングあたり24個、計12リング分(288個)を準備。
2. リングへのLED実装


- 金属リングに予めハンダを乗せ(予備ハンダ)、LEDを取り付け。リングが熱容量大のため、40Wこて全開で5-10秒加熱必要
- クリップオンヒートシンクでLEDリードを保護しながら作業
- リングに24等分の位置マーキング、治具で垂直固定して作業
- データイン・アウトを隣接LED間で接続(リング全体で1本のデータラインに)
3. 電源レール(+5V)の配線

22ゲージ錫メッキ銅線を26インチ(約66cm)伸ばし、全LEDのVCCリードにハンダ付け。GNDは金属リング自体を共通グランドとして利用。
4. リング単体テスト
データインピンをArduino UNOのD6に接続し、付属テストスケッチで全LED点灯確認。この段階で不良LEDやコールドジョイントを修正するのが最も容易です。
5. 12リングの量産
1リング目で要領を掴めば、1リング約2時間で制作可能。全リングでLED位相を揃えるため、1つ目のリングをテンプレートとしてデータイン位置を固定して制作(最初の2リングはズレているが、以降は改善)。
6. タワー組み立て(下部4リングから開始)


- リング間スペーサー:高さ22mm(1インチ)の3Dプリント部品または1/4インチ木ダボ。Blu-Tackで仮固定
- アクリルロッド6本をホットボンドで固定。LED間に均等配置(ロッド間4LED)
- 一度固定すると修正不可のため、位置決めは慎重に
- スペーサーを取り外し、上部リングを順次追加
7. リング間接続

- 電源レール(GND, +5V)は全12リングを並列接続
- データラインは2系統に分割:
- 下位6リング → Arduino D7
- 上位6リング → Arduino D6
- 当初は1系統(288個直列)としたが、8リング目付近で謎のフラッシュが発生。コンデンサ追加で改善せず、データライン分割で解決
8. Arduino UNOの搭載

残り4本のアクリルロッドでUNOをタワー下部に吊り下げ固定。接続:GND, +5V, D6, D7の4線のみ。
ソフトウェア
ライブラリ選定:FastLED
従来はAdafruit NeoPixelライブラリを使用していましたが、今回は FastLED を採用。理由:
- 高速数学関数、256段階パレット、数百の組み込み関数・パレット
- フェード処理が簡単
- APA106をネイティブサポート(NeoPixelでは設定試行錯誤が必要だった)
独自ユーティリティ関数
setColor(row, column, color):リング番号と列番号でLEDを指定。データライン系統とチェーン内位置への変換を内部で処理setHue(row, column, hue):0-255の色相値で虹色指定- Web名付き色(
CRGB::HotPink等)を#defineで短縮名化し、関数引数として扱いやすく rotate(ring, direction):指定リングのLEDパターンを1ステップ回転。塔全体や部分的な逆回転など多彩な効果を生成
幾何学テーブルによる演出
- 円柱×平面の交差:18角度分の交差パターンをテーブル化(プログラムメモリ格納)。交差高さを変化させてアニメーション化
- 円柱×球の交差:同様にテーブル化。平面交差ほど効果的ではないが、1エフェクトで使用
同梱スケッチ3種
- リングテスト:単体リング動作確認用(D6接続)
- クイックショー:45秒のプレビュー版
- フルショー:8分間・16種類のエフェクト/アニメーション
既知の問題と対策
メインループ末尾でソフトウェアリセットを実行しています。これがないと、複数回の全エフェクト再生後にプログラムがハングアップします(スタックからの解放漏れ、またはFastLEDライブラリ側の問題の可能性)。根本原因は未特定ですが、リセットで安定動作します。
コードと回路図
- コード:3スケッチ入りZIPファイル(ダウンロードのみ)
- 回路図:

製造プロセス
- 風力タービン技術:歴史、設計、未来への影響
- 自作LUMAZOID:Arduino音楽ビジュアライザーDIYガイド
- Arduino UNOとMAX7219で作るUFOアタックゲーム – レトロなドットマトリクスシューティング
- Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
- Arduinoで「棺桶ダンス」メロディーを再現するプロジェクト
- 3D RGB アルドゥクロック:Bluetooth対応LED時計(RTC内蔵)
- 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
- Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
- Arduinoとジョイスティックでインタラクティブゲーム – LEDフィードバック付き
- アナログ風LED POVクロック – Arduino Nanoで作る残像時計
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」