DMX RGBLED屋外
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
こんにちはみんな、私はすでに家の中にたくさんのDMX制御のライトを持っていますが、外にもいくつか持っていたいと思っていました。これらのRGBDMXライトはかなり高価なので(1つは約200〜300ユーロ)、代替品を探しました。
<図>私が見つけたのは、これらの非常に安価なRGBLEDがIRコントロールユニットで溢れていることでした。これらは約8€/ 10WRGBです。
<図>だから、私がしなければならなかったのは、DMXを理解するためにこれらを変換することだけです。
コストと必要なPCBスペースを抑えるために、5つのフラッドすべてで、別のボックスに1つのArduinoブレインしかありません。各ライトには、3チャネルのPWMトリガー定電流源PCBとD-Sub9コネクタケーブルがあります。このPCBは、ライトの下部にある小さなコンパートメントに完全に収まります。 LEDの各チャネルは350mAに設定されています。
<図><図>
5つのライトはすべて、arduinoとワイヤレスDMXレシーバーを備えた中央のボックスに接続されています
<図><図>
このボックスの中には次のものがあります:
- 12V3,5A電源
- 12V-5V携帯電話充電器
- DMX(RS485)コンバーター用の独自のPCB上のArdunino Nano
- I2Cを介したArdufruit16チャネルPWM拡張
- ワイヤレスDMXレシーバー
- D-Subリボンケーブル用の配布PCB
- 水密にするためのホットグルーがたくさんあります
これまでのところ、大雨の中で3週間生き延び、箱を縫い合わせ、密閉は水密です。
NanoをマウントしたPCBは、すべてのDMXプロジェクトでユニバーサルであり、DMXバス信号をArdunioに変換でき、I2Cバスおよび/またはMosFET(BUZ11)を備えた6つのPWMチャネルすべてのブレークアウトでもあります。また、MosFETと一緒に使用して、内部ランプをDMXに更新しました。
<図>したがって、すべてのトゲッターは、PC /携帯電話を介してワイヤレスDMXを介して制御される5つの個別に制御されたランプ(ここでは私のガラスの手すり)になります。
<図><図>
<図>
ダウンロードには、PCBのイーグルファイル、Arduinoスケッチのコピー&ペースト、およびPC制御ソフトウェアFreestylerのランプの定義ファイルが含まれています。
DMXアドレスは、アドレス200を開始し、次に調光器チャネルなしで5x 3チャネルR、G、Bを開始するようにハードコーディングされています。
Arduino-Sketchでは、赤のLEDが緑や青よりもはるかに明るいため、真っ白に混ざらないため、赤のチャネルの値を操作する必要がありました。
または、ArdunioIDEターミナルから直接RGB値を設定できるテスト/バグ修正用のスケッチが1つあります
5つのランプの合計コストは約110ユーロで、すべての部品(ライトを除く)はReichelt.deから供給され、すべてのPCBはplatinenbelichter.deによって製造されています(大きな推奨事項です!)
すべてを自由に変更または最適化してください!
さようなら、
セバスチャン
コード
- DMXバージョン
- USB入力バージョン
- フリースタイラー用の備品
DMXバージョン Arduino
5x3チャンネルRGBライトの制御プログラム// 5つのRGBLEDで15PWM / DMX開始アドレス200 / 5x3チャンネルRGB#include#include #include Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(); #define DMX_SLAVE_CHANNELS 15DMX_Slave dmx_slave(DMX_SLAVE_CHANNELS); int channel [16]; int channelOut [16]; int value [16]; int ch =0; int red =0; int green =0; int blue =0; void setup(){Wire.begin(); // i2cバスに参加します(マスターのアドレスはオプションです)pwm.begin(); pwm.setPWMFreq(120); //これは最大PWM周波数です#ifdefTWBR // I2Cビットレートを保存しますuint8_ttwbrbackup =TWBR; // Wire.begin()(pwm.begin()内)を呼び出した後に変更する必要がありますTWBR =12; // 400KHzにアップグレードします!#endif // DMXセットアップdmx_slave.enable(); dmx_slave.setStartAddress(200); //すべてのPWMをハイに設定-> LEDをオフpwm.setPWM(0、4096、0); pwm.setPWM(1、4096、0); pwm.setPWM(2、4096、0); pwm.setPWM(3、4096、0); pwm.setPWM(4、4096、0); pwm.setPWM(5、4096、0); pwm.setPWM(6、4096、0); pwm.setPWM(7、4096、0); pwm.setPWM(8、4096、0); pwm.setPWM(9、4096、0); pwm.setPWM(10、4096、0); pwm.setPWM(11、4096、0); pwm.setPWM(12、4096、0); pwm.setPWM(13、4096、0); pwm.setPWM(14、4096、0);} void loop(){// DMX入力for(int j =0; j <=14; j ++){channel [j] =dmx_slave.getChannelValue(j + 1); } //色を微調整するchannelOut [0] =map(channel [0]、0、255、0、1400); //赤色LEDを減らします1channelOut [1] =map(channel [1]、0、255、0、4095); channelOut [2] =map(channel [2]、0、255、0、4095); channelOut [3] =map(channel [3]、0、255、0、1400); //赤色LEDを減らします2channelOut [4] =map(channel [4]、0、255、0、4095); channelOut [5] =map(channel [5]、0、255、0、4095); channelOut [6] =map(channel [6]、0、255、0、1400); //赤色LEDを減らします3channelOut [7] =map(channel [7]、0、255、0、4095); channelOut [8] =map(channel [8]、0、255、0、4095); channelOut [9] =map(channel [9]、0、255、0、1400); //赤色LEDを減らします4channelOut [10] =map(channel [10]、0、255、0、4095); channelOut [11] =map(channel [11]、0、255、0、4095); channelOut [12] =map(channel [12]、0、255、0、1400); //赤色LEDを減らします5channelOut [13] =map(channel [13]、0、255、0、4095); channelOut [14] =map(channel [14]、0、255、0、4095); //(int i =0; i <=14; i ++){if(channelOut [i] ==0){pwm.setPWM(i、4096、0);に値を割り当てます} else {pwm.setPWM(i、0、4095-channelOut [i]); }}}
USB入力バージョン Arduino
ランプ番号の直接入力を使用したデバッグバージョン。およびRGB値// 5つのRGBで15PWM LED#include#include //このように呼び出され、デフォルトアドレス0x40Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(); //を使用できます。また、必要な別のアドレスで呼び出します// Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(0x41); int channel [15]; int channelOut [15]; int value [15]; int ch =0; int red =0; int green =0; int blue =0; void setup(){Wire.begin(); // i2cバスに参加します(マスターのアドレスはオプションです)Serial.begin(9600); Serial.println( "入力を待機しています:LED、R、G、B、[各0-255]"); pwm.begin(); pwm.setPWMFreq(120); //これは最大PWM周波数です//本当にスピードアップしたい場合は、「高速400khz I2C」モードに入ることができます//一部のi2cデバイスはこれをあまり好まないので、バスを共有している場合は、見てください/ /このために!#ifdef TWBR // I2Cビットレートを保存uint8_ttwbrbackup =TWBR; // Wire.begin()(pwm.begin()内)を呼び出した後に変更する必要がありますTWBR =12; // 400KHzにアップグレードします!#endif //すべてのPWMをハイに設定します-> LEDをオフにしますpwm.setPWM(0、4096、0); pwm.setPWM(1、4096、0); pwm.setPWM(2、4096、0); pwm.setPWM(3、4096、0); pwm.setPWM(4、4096、0); pwm.setPWM(5、4096、0); pwm.setPWM(6、4096、0); pwm.setPWM(7、4096、0); pwm.setPWM(8、4096、0); pwm.setPWM(9、4096、0); pwm.setPWM(10、4096、0); pwm.setPWM(11、4096、0); pwm.setPWM(12、4096、0); pwm.setPWM(13、4096、0); pwm.setPWM(14、4096、0);} void loop(){//入力色while(Serial.available()> 0){ch =Serial.parseInt();赤=Serial.parseInt();緑=Serial.parseInt();青=Serial.parseInt(); if(Serial.read()=='\ n'){} ch =Constraint(ch、0、4);赤=制約(赤、0、255);緑=制約(緑、0、255);青=制約(青、0、255); // 3つの数値を出力します:Serial.print( "new values:"); Serial.print( "LED ="); Serial.print(ch、DEC); Serial.print( "R ="); Serial.print(red、DEC); Serial.print( "、G ="); Serial.print(緑、DEC); Serial.print( "、B ="); Serial.println(青、12月); } switch(ch){case 0:channel [0] =red; channel [1] =緑; channel [2] =青;壊す;ケース1:channel [3] =赤; channel [4] =緑; channel [5] =青;壊す;ケース2:channel [6] =赤; channel [7] =緑; channel [8] =青;壊す;ケース3:channel [9] =赤; channel [10] =緑; channel [11] =青;壊す;ケース4:channel [12] =赤; channel [13] =緑; channel [14] =青;壊す; } //色を微調整するchannelOut [0] =map(channel [0]、0、255、0、1400); //赤色LEDを減らします1channelOut [1] =map(channel [1]、0、255、0、4095); channelOut [2] =map(channel [2]、0、255、0、4095); channelOut [3] =map(channel [3]、0、255、0、1400); //赤色LEDを減らします2channelOut [4] =map(channel [4]、0、255、0、4095); channelOut [5] =map(channel [5]、0、255、0、4095); channelOut [6] =map(channel [6]、0、255、0、1400); //赤色LEDを減らします3channelOut [7] =map(channel [7]、0、255、0、4095); channelOut [8] =map(channel [8]、0、255、0、4095); channelOut [9] =map(channel [9]、0、255、0、1400); //赤色LEDを減らします4channelOut [10] =map(channel [10]、0、255、0、4095); channelOut [11] =map(channel [11]、0、255、0、4095); channelOut [12] =map(channel [12]、0、255、0、1400); //赤色LEDを減らします5channelOut [13] =map(channel [13]、0、255、0、4095); channelOut [14] =map(channel [14]、0、255、0、4095); //(int i =0; i <=14; i ++){if(channelOut [i] ==0){pwm.setPWM(i、4096、0);に値を割り当てます} else {pwm.setPWM(i、0、4095-channelOut [i]); }}}
Freestyler BatchFile のフィクスチャ
PC上のDMX制御プログラムのチャネル記述の定義BuzzComments: "" Outdoor LED3 0 0 RBG Outdoor.gif0000000 1 123RedGreenBlueMacros 2 0 0 0 1 0 0255000000255025502550255025502550255000-0-0-0-1Sliders 0
回路図
DMX入力とPWM / I2C出力を備えたユニバーサルNanoベース製造プロセス