查看: 5490|回复: 7
|
Vinex灯光效果设计软件与Arduino沟通
[复制链接]
|
|
Vinex是一个免费的灯光效果设计软件。 通过电脑和一些硬件,任何人都可以设计与音乐同步的灯光效果显示。
Vinex在华文里不懂称为什么。用Google翻译之,很滑稽,泼妇也![](static/image/smiley/default/lol.gif)
Vinex支持不同的控制器,其中通过DMX(如果需要,可以自制一个OpenDMX,非常简单)可以控制许多市面上销售的专业形DMX设备(fixture),最常见的就是disco场所的激光灯光。
最新的版本是Vixen3,其中最吸引人之处是支持预览。与Vixen2比较,Vixen3应用有些难,且缺少了Vixen2中的某些常用功能。此教程是基于Vixen2,请下载Vixen2,并安装到你的电脑, 但你必须先安装Microsot.NET Framework 2.0在你的电脑上。
Arduino代码
由于Arduino Mega拥有12个PWM输出和多个数字(Digital)输出,所以用了它来控制灯光。这里我隋便写了几行代码,上载至Arduino Mega,与Vixen2测试了一下,可以正常运行。如果你不需要多个PWM,只要稍微更改代码就可以用在不同的Arduino了。- /*
- 16 Channels Lighting Controller
- By smching (http://ediy.com.my)
- Allow Arduino Mega to communicate with Vixen via generic serial plugin
- */
- #define CHANNELS_COUNT 16
- ////////// PWM pin
- #define Ch1 2 // PWM Pin 2
- #define Ch2 3 // PWM Pin 3
- #define Ch3 4 // PWM Pin 4
- #define Ch4 5 // PWM Pin 5
- #define Ch5 6 // PWM Pin 6
- #define Ch6 7 // PWM Pin 7
- #define Ch7 8 // PWM Pin 8
- #define Ch8 9 // PWM Pin 9
- #define Ch9 10 // PWM Pin 10
- #define Ch10 11 // PWM Pin 11
- #define Ch11 12 // PWM Pin 12
- #define Ch12 13 // PWM Pin 13
- /////////// digital pin
- #define Ch13 18 // DIGITAL Pin 18
- #define Ch14 19 // DIGITAL Pin 19
- #define Ch15 20 // DIGITAL Pin 20
- #define Ch16 21 // DIGITAL Pin 21
- int Ch[CHANNELS_COUNT] = {Ch1, Ch2, Ch3, Ch4, Ch5, Ch6, Ch7, Ch8, Ch9, Ch10, Ch11, Ch12, Ch13, Ch14, Ch15, Ch16};
- int incomingByte[CHANNELS_COUNT]; // array to store the values from serial port
- void setup()
- {
- Serial.begin(9600); // set up Serial at 9600 bps
- for (byte i=0; i<CHANNELS_COUNT; i++) pinMode(Ch[i], OUTPUT); // declare channel pin as an output
- }
- void loop() {
- if (Serial.available() >= CHANNELS_COUNT) {
- for (int i=0; i<CHANNELS_COUNT; i++) {
- incomingByte[i] = Serial.read(); // read each byte
- if (i<12) { //arduino mega consists of 12 PWM
- analogWrite(Ch[i], incomingByte[i]); // Write values to channel pins
- } else {
- digitalWrite (Ch[i], incomingByte[i]);
- }
- }
- }
- }
复制代码 启动与设定设定值Vixen
- 打开Vixen
- 点击Sequence>New event sequence>Vixen standard sequence
- 当出现New Sequence Wizard,点击Next按钮
- 点击Next按钮以便使用100毫秒Event Period
- 点击Next按钮,不使用Profile
- 输入Channel以配合你的控制器。由于使用了16 Channels设计的Arduino,所以这里输入16,然後点击Next按钮继续
- 点击Setup Plugins按钮以便设定Vixen插件,如图
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/Sequence_Plugin_Mapping.jpg)
- 在Available Plugins里双击Generic serial以便启动串行插件
- 在Plugins in Use里点击Generic serial
- 点击Pugin Setup以便设定设定值串口设置
- 选择Arduino使用的串口以及Baud reate,然後点击OK按钮,如图
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/Com_port_settings.jpg)
- 点击Next按钮继续下一步骤
- 点击Next按钮跳过Audio and Extent Patterns(需要与声频同步时才设定)
- 输入Sequence Time,默认是一分钟
- 点击Create It按钮,然後输入一个文件名字,再点击Save以保存文件
- 此时Vixen灯光效果设计窗口出现了
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/Vixen_Main_Screen.jpg)
使用Vixen
- 选择Channel(你可以同时选择多个Channel)和Sequence Time,如图。现在选择了十个Channel和两秒Sequence Time。
- 完成你想要放置灯光效果的范围后,现在可以点击效果icon以便控制效果
- 重复步骤2以制造更多效果
- 点击Play/Pause/Stop icon起始播放灯光效果
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/Using_Vixen.jpg)
想要怎样效果,就有怎样效果,非常方便
与声频同步
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/Synchronise_audio.jpg)
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/Event_Sequence_Aduio.jpg)
根据声频信号设计你的灯光效果
本帖最后由 西门庆33 于 14-7-2013 10:58 PM 编辑
|
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 14-7-2013 10:51 PM
|
显示全部楼层
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 15-7-2013 10:39 PM
|
显示全部楼层
DMX Lighting Sequence Player
有了这个Arduino DMX 播放器 ,省了使用电脑来播放。
只要把Vixen的工程,经过Python脚本(Python script)处理,转换成文本格式(text format),把它保存至SD卡,最后用此SD让Arduino来处理。
|
|
|
|
|
|
|
|
发表于 18-9-2013 10:35 PM
|
显示全部楼层
好好玩的东西哦... ![](static/image/smiley/default/titter.gif) 得空来个挑战 ! |
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 9-12-2013 08:42 PM
|
显示全部楼层
控制多PWM输出
这里使用了TLC5940,每一个channel都是PWWM输出
![](http://ediy.com.my/images/Blog/Arduino_communicate_with_Vixen_Lighting_Control_Software/breadboard-arduino-tlc5940.png)
如果只用一颗TLC5940,CHANNELS_COUNT值设成16。两颗TLC5940,CHANNELS_COUNT值设成32。以此类推- /*
- Basic Pin setup:
- ------------ ---u----
- ARDUINO 13|-> SCLK (pin 25) OUT1 |1 28| OUT channel 0
- 12| OUT2 |2 27|-> GND (VPRG)
- 11|-> SIN (pin 26) OUT3 |3 26|-> SIN (pin 11)
- 10|-> BLANK (pin 23) OUT4 |4 25|-> SCLK (pin 13)
- 9|-> XLAT (pin 24) . |5 24|-> XLAT (pin 9)
- 8| . |6 23|-> BLANK (pin 10)
- 7| . |7 22|-> GND
- 6| . |8 21|-> VCC (+5V)
- 5| . |9 20|-> 2K Resistor -> GND
- 4| . |10 19|-> +5V (DCPRG)
- 3|-> GSCLK (pin 18) . |11 18|-> GSCLK (pin 3)
- 2| . |12 17|-> SOUT
- 1| . |13 16|-> XERR
- 0| OUT14|14 15| OUT channel 15
- ------------ --------
- - +5V from Arduino -> TLC pin 21 and 19 (VCC and DCPRG)
- - GND from Arduino -> TLC pin 22 and 27 (GND and VPRG)
- - digital 3 -> TLC pin 18 (GSCLK)
- - digital 9 -> TLC pin 24 (XLAT)
- - digital 10 -> TLC pin 23 (BLANK)
- - digital 11 -> TLC pin 26 (SIN)
- - digital 13 -> TLC pin 25 (SCLK)
- - The 2K resistor between TLC pin 20 and GND will let ~20mA through each
- LED. To be precise, it's I = 39.06 / R (in ohms).
- */
- #include "Tlc5940.h"
- #define CHANNELS_COUNT 16
- int incomingData;
- void setup()
- {
- Serial.begin(9600); // set up Serial at 9600 bps
- Serial.println("Vixen + TLC5940 demo");
- Tlc.init(0); // Call Tlc.init() to setup the tlc.
- }
- void loop()
- {
- if (Serial.available() >= CHANNELS_COUNT) {
- for (int i = 0; i < CHANNELS_COUNT; i++) {
- incomingData = Serial.read(); //read each byte
- incomingData = map(incomingData, 0, 255, 0, 4095); //scale to TLC range.
- Tlc.set(i, incomingData);
- }
- Tlc.update(); //sends the data to the TLCs. This is when the LEDs will actually change
- }
- }
复制代码 本帖最后由 西门庆33 于 9-12-2013 08:51 PM 编辑
|
|
|
|
|
|
|
|
发表于 4-11-2015 05:32 PM
|
显示全部楼层
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 9-11-2015 08:37 PM
|
显示全部楼层
太粗心,输入错了。都已经错了两年有余,让错误继续保留吧。谢提醒。
|
|
|
|
|
|
|
|
发表于 9-11-2015 08:43 PM
|
显示全部楼层
抱歉挖大大兩年前的瘡疤 ![](static/image/smiley/default/icon_redface.gif)
謝謝分享
![](static/image/smiley/onion/2crtl.gif)
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|