ArduinoでDMX制御する(チップ内蔵型LEDとの連動版 ~ WS2801 ~)
WS2801のチップを使ったLED( http://bit.ly/1JwJEn4 )とDMX to SPI( http://bit.ly/1OpeipK )を使うと、
LED一粒ずつの制御が可能になる。
チャンネルの概念としては、一粒ごとのRGBおのおのにチャンネルが割り当てられる様子。
つまり、チャネル1は1粒目のR、チャネル2は1粒目のG、チャネル3は1粒目のB、チャネル4は2粒目のR,,,,のようになります。
機材構成 1. Arduino UNO x 1 http://www.amazon.co.jp/dp/B00E5WJSHK/ 2. DMX Shield for Arduino x 1 https://www.tindie.com/products/Conceptinetics/dmx-shield-for-arduino-remote-device-management-capable/ 3. DMX512 Decoder(DMX to SPI) http://bit.ly/1OpeipK 4. WS2811チップを使ったLEDテープ(NeoPixelなど) http://bit.ly/1JwJEn4 5. ACアダプタ(5V / 2A) http://akizukidenshi.com/catalog/g/gM-01801/ 6. DMXケーブル(3ピン) http://www.soundhouse.co.jp/products/detail/item/184705/ 7. USBケーブル(B-Type) http://akizukidenshi.com/catalog/g/gC-07605/
①以下のソースコードをUPする
※ Uploadする際にDMX ShieldのENピンは(not)ENピンをショートさせておく。
// ENピンを有効に // DEピンを有効に // TX / RX - uartピンを有効に #include <Conceptinetics.h> // The master will control 100 Channels (1-100) // // depending on the ammount of memory you have free you can choose // to enlarge or schrink the ammount of channels (minimum is 1) #define DMX_MASTER_CHANNELS 100 // Pin number to change read or write mode on the shield #define RXEN_PIN 2 // Configure a DMX master controller, the master controller // will use the RXEN_PIN to control its write operation // on the bus DMX_Master dmx_master ( DMX_MASTER_CHANNELS, RXEN_PIN ); int dimmer_col_idx = 10; // 10 ~ 12 int dimmer_val = 0; // void setup() { dmx_master.enable (); // Set channel 1 - 50 @ 50% //dmx_master.setChannelRange ( 2, 25, 127 /* i.e. 256 * 0.5 */ ); dmx_master.setChannelRange ( 1, 144, 127 ); for (int i = 1; i < 144; i++) { dmx_master.setChannelValue ( i, 0 ); } } void loop() { // Keep fading channel 1 in from 0 to 100% dmx_master.setChannelValue ( 1, dimmer_val++ ); dmx_master.setChannelValue ( 5, dimmer_val++ ); dmx_master.setChannelValue ( 10, dimmer_val++ ); if (dimmer_val > 127) { delay(1000); dimmer_val = 0; dmx_master.setChannelValue ( dimmer_col_idx, dimmer_val++ ); delay(1000); dimmer_col_idx++; if (dimmer_col_idx > 12) { dimmer_col_idx = 10; } } delay ( 10 ); }
②DMX Shield for Arduinoのジャンパーのアサインを下記に変更
ENピン側をショート。
DEピン側をショート。
TX-uart側をショート。
RX-uart側をショート。
③LEDがつく