Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
必要なコンポーネントと用品
![]() |
Arduino Nano R3 | × | 1 |
![]() |
Arduino UNO | × | 1 |
![]() |
Digilent WS2812 Addressable LED Strip | × | 1 |
使用アプリとオンラインサービス
![]() |
Arduino IDE |
このプロジェクトについて
こんにちは、皆さん。今日はArduinoを使ってTV Ambilightを作る方法を紹介します。とても簡単なプロジェクトです。
各パーツの詳細な動作については、私のブログに情報を書いているのでここでは詳しく説明しません。https://www.diyprojectslab.com/make-tv-ambilight-w...
ここで与えられる情報だけで動作させられるはずです。
- PC用Ambiboxソフトウェア(無料、Windowsのみ)
- FastLEDライブラリを使用したシンプルなスクリプトを書いたArduino(約3ドル)
- 50個のRGB WS2811 LED(約13ドル) - オプションで電源アダプター
このセットアップは非常に安価ですが、PCでのみ動作します。
ありがとうございます NextPCB
このプロジェクトはNextPCBの助力とサポートにより成功しました。
注意
LinuxやMacはサポートされていません。使用するAmbiboxソフトウェアはWindowsでのみ利用可能です(スタンドアロン用途ならRaspberry Pi版もありますが、かなり高価)。
LEDはデスクトップや映画鑑賞ではほぼラグなしで快適に動作します! ゲームは別問題です。
ゲームがフルスクリーンモードで動作すると、ソフトウェアが画面をキャプチャできないことがほとんどです。しかしボーダーレスモードなら動作します!(CPUパワー約5%増を考慮してください)
ステップ1:構築に必要な材料
- LEDストリップ WS2812B
- Arduino Nano
- ミニブレッドボード
- ジャンパーワイヤー
- DCジャック端子
- Mini USB to USB
- LED用5V電源
- コンピューター
- Arduino IDE
- プログラミングケーブル
ありがとうございます NextPCB:
このプロジェクトはNextPCBの助力とサポートにより成功しました。
PCBプロジェクトをお持ちなら、ウェブサイトを訪れてエキサイティングな割引とクーポンをゲットしてください。
NextPCBでのミッドサマーセール
1. PCBオーダー最大30%オフ
2. PCBAオーダー最大20%オフ
3. 5-10個のPCBプロトタイプが0ドル https://www.nextpcb.com/
ステップ2:RGB LED
このプロジェクトで最も重要なのは、個別コントローラー付きRGB LEDです。FastLEDライブラリがサポートしていれば、どのRGB LEDコントローラーでも構いません。サポートされているLEDチップはこちら:https://github.com/FastLED/FastLED/wiki/Overview
最も一般的なのはWS2811またはWS2812 LEDです。安価で使いやすいため、このプロジェクトでもこれらを使用します。これらは少なくとも2タイプで販売されています:
- 単体球(12mm)で、最大約10cmの間隔で可変配置。通常50個単位で販売ですが、LEDを追加・削除可能。
- LEDストリップ(裏面に粘着テープ)。1メートル単位で固定間隔(30/60/それ以上 LED/メートル)で購入。単体球なら完全に自由な配置・間隔が可能ですが、モニターへの取り付け方法を自分で工夫する必要があります。
ステップ3:LEDストリップをTVに取り付け
まず、モニター裏面のサイズを測り、ストリップから何個のLEDを切り出すか決めます。測定時は各エッジから約1cm空けて、取り付け時にストリップが見えないようにします。
測定に満足したら、LEDストリップを長さに合わせてカットします。各LEDは個別にアドレス指定可能なので、マークされたカットポイントで各LEDごとにカットできます(画像参照)。4本すべてのストリップをカットしたら次のステップへ。
すべてのストリップをサイズにカットしたら、それらを再接続して単一の「柔軟な」ストリップとして機能させます。私は撚り線を使用しました。単純に+5Vを次の+5Vレールへ、DINを次のDINへ、GNDを次のGNDへはんだ付けします。
これで4つのパーツがすべて接続された1本のストリップになります。
重要なヒント:LEDストリップの方向矢印が正しい向きを向いていることを確認してください。そうでないと動作しません。
ステップ4:Arduinoの接続
DINピンをArduinoボードのピン番号5に接続します。私のにはヘッダーが付いていたので、はんだ付けしました。画像では誤って白いワイヤーをGND、黒をデータに使っています。混同しないでください。ストリップからのデータワイヤーはArduinoボードの4番ピンに接続する必要があります。
オプション:ArduinoのGNDピンをPSUのGNDに接続できます。PCの電源とは別の電源を使用する場合に便利です。
次にArduinoをPCに接続し、必要なドライバーをインストールします(ある場合)。
前提:Arduinoへのコード書き込み方法は知っているものとします。知らない場合はオンラインの無数のチュートリアルを検索してください :) Arduinoプログラマーを使って、以下のコードでボードをコンパイル・書き込みしてください:
ステップ5:接続図
ステップ6:ソフトウェア
Adalight + Perismatic
下部からArduino用Adalightコードをダウンロードしてください。(コード)
Arduino IDEで開き、FastLEDライブラリがすでにインストール済みか確認してください。
コード内で、ピン(私の場合デジタルピン4)とLED数(私の場合60)を定義するだけです。
コンパイルし、COMポートを選択してコードをArduinoにアップロードします。
ここで各色を調整し、背景壁の色(私の場合白)と一致させます。「次へ」をクリックで完了。説明欄のRGBテスト動画を再生すれば完成です。
これで映画をAMBILIGHT効果で鑑賞できます。最高です。
アプリケーションにはサウンドエフェクトもあり、再生中の音楽に合わせてLEDが点滅します。
私のウェブサイトDiY Projects Labには、25以上の素晴らしい詳細プロジェクトがあります。
コード
#include "FastLED.h" #define NUM_LEDS 240 #define DATA_PIN 6 // ボーレート、高いレートほど高速リフレッシュと多くのLEDに対応(/etc/boblight.confで定義) #define serialRate 115200 // Adalightはピクセルデータ送信前に「マジックワード」(/etc/boblight.confで定義)を送信 uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i; // LED配列初期化 CRGB leds[NUM_LEDS]; void setup() { // 真の色を保つためNEOPIXELを使用 FastLED.addLeds(leds, NUM_LEDS); // 初期RGBフラッシュ LEDS.showColor(CRGB(255, 0, 0)); delay(500); LEDS.showColor(CRGB(0, 255, 0)); delay(500); LEDS.showColor(CRGB(0, 0, 255)); delay(500); LEDS.showColor(CRGB(0, 0, 0)); Serial.begin(serialRate); // ホストへ「マジックワード」文字列送信 Serial.print("Ada\n"); } void loop() { // マジックワードの最初のバイトを待機 for(i = 0; i < sizeof prefix; ++i) { waitLoop: while (!Serial.available()) ;; // マジックワードの次のバイトをチェック if(prefix[i] == Serial.read()) continue; // それ以外なら最初から i = 0; goto waitLoop; } // Hi, Lo, Checksum while (!Serial.available()) ;; hi=Serial.read(); while (!Serial.available()) ;; lo=Serial.read(); while (!Serial.available()) ;; chk=Serial.read(); // チェックサムが合わなければ待機に戻る if (chk != (hi ^ lo ^ 0x55)) { i=0; goto waitLoop; } memset(leds, 0, NUM_LEDS * sizeof(struct CRGB)); // 送信データを読み取りLED値を設定 for (uint8_t i = 0; i < NUM_LEDS; i++) { byte r, g, b; while(!Serial.available()); r = Serial.read(); while(!Serial.available()); g = Serial.read(); while(!Serial.available()); b = Serial.read(); leds[i].r = r; leds[i].g = g; leds[i].b = b; } // 新しい値を表示 FastLED.show(); }
回路図
製造プロセス
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ
- DIY集水槽水位モニター - Arduino Nano、MPXV5010DP、OLEDディスプレイ
- Arduinoで自作RCポルシェカー:ステップバイステップガイド
- Arduinoで楽器演奏:音階生成のステップバイステップガイド
- Arduino Mega と IoT センサによる高機能ホームモニタリングシステム
- Arduino UNOで作る信頼性の高いスマートエネルギーモニター – ステップバイステップガイド
- ArduinoとProcessingで作るリアルタイムデジタルコンパス



