佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 5205|回复: 7

Vinex灯光效果设计软件与Arduino沟通

[复制链接]
发表于 14-7-2013 10:06 PM | 显示全部楼层 |阅读模式
Vinex是一个免费的灯光效果设计软件。 通过电脑和一些硬件,任何人都可以设计与音乐同步的灯光效果显示。

Vinex在华文里不懂称为什么。用Google翻译之,很滑稽,泼妇也

Vinex支持不同的控制器,其中通过DMX(如果需要,可以自制一个OpenDMX,非常简单)可以控制许多市面上销售的专业形DMX设备(fixture),最常见的就是disco场所的激光灯光。
images.jpg images(2).jpg

最新的版本是Vixen3,其中最吸引人之处是支持预览。与Vixen2比较,Vixen3应用有些难,且缺少了Vixen2中的某些常用功能。此教程是基于Vixen2,请下载Vixen2,并安装到你的电脑, 但你必须先安装Microsot.NET Framework 2.0在你的电脑上。

Arduino代码
由于Arduino Mega拥有12个PWM输出和多个数字(Digital)输出,所以用了它来控制灯光。这里我隋便写了几行代码,上载至Arduino Mega,与Vixen2测试了一下,可以正常运行。如果你不需要多个PWM,只要稍微更改代码就可以用在不同的Arduino了。
  1. /*
  2.   16 Channels Lighting Controller
  3.   By smching (http://ediy.com.my)
  4.   Allow Arduino Mega to communicate with Vixen via generic serial plugin
  5. */

  6. #define CHANNELS_COUNT 16

  7. ////////// PWM pin
  8. #define Ch1 2  // PWM Pin 2
  9. #define Ch2 3  // PWM Pin 3
  10. #define Ch3 4  // PWM Pin 4
  11. #define Ch4 5  // PWM Pin 5
  12. #define Ch5 6  // PWM Pin 6
  13. #define Ch6 7  // PWM Pin 7
  14. #define Ch7 8  // PWM Pin 8
  15. #define Ch8 9  // PWM Pin 9
  16. #define Ch9 10  // PWM Pin 10
  17. #define Ch10 11  // PWM Pin 11
  18. #define Ch11 12  // PWM Pin 12
  19. #define Ch12 13  // PWM Pin 13
  20. /////////// digital pin
  21. #define Ch13 18  // DIGITAL Pin 18
  22. #define Ch14 19  // DIGITAL Pin 19
  23. #define Ch15 20  // DIGITAL Pin 20
  24. #define Ch16 21  // DIGITAL Pin 21

  25. int Ch[CHANNELS_COUNT] = {Ch1, Ch2, Ch3, Ch4, Ch5, Ch6, Ch7, Ch8, Ch9, Ch10, Ch11, Ch12, Ch13, Ch14, Ch15, Ch16};
  26. int incomingByte[CHANNELS_COUNT];   // array to store the values from serial port

  27. void setup()
  28. {
  29.   Serial.begin(9600);        // set up Serial at 9600 bps
  30.   for (byte i=0; i<CHANNELS_COUNT; i++) pinMode(Ch[i], OUTPUT);  // declare channel pin as an output
  31. }

  32. void loop() {  
  33.    if (Serial.available() >= CHANNELS_COUNT) {
  34.       for (int i=0; i<CHANNELS_COUNT; i++) {
  35.         incomingByte[i] = Serial.read(); // read each byte
  36.         if (i<12) { //arduino mega consists of 12 PWM
  37.            analogWrite(Ch[i], incomingByte[i]);   // Write values to channel pins
  38.         } else {  
  39.            digitalWrite (Ch[i], incomingByte[i]);
  40.         }      
  41.       }
  42.    }
  43. }
复制代码
启动与设定设定值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插件,如图


  • 在Available Plugins里双击Generic serial以便启动串行插件
  • 在Plugins in Use里点击Generic serial
  • 点击Pugin Setup以便设定设定值串口设置
  • 选择Arduino使用的串口以及Baud reate,然後点击OK按钮,如图

  • 点击Next按钮继续下一步骤
  • 点击Next按钮跳过Audio and Extent Patterns(需要与声频同步时才设定)
  • 输入Sequence Time,默认是一分钟
  • 点击Create It按钮,然後输入一个文件名字,再点击Save以保存文件
  • 此时Vixen灯光效果设计窗口出现了



使用Vixen
  • 选择Channel(你可以同时选择多个Channel)和Sequence Time,如图。现在选择了十个Channel和两秒Sequence Time。
  • 完成你想要放置灯光效果的范围后,现在可以点击效果icon以便控制效果
  • 重复步骤2以制造更多效果
  • 点击Play/Pause/Stop icon起始播放灯光效果

想要怎样效果,就有怎样效果,非常方便

与声频同步




根据声频信号设计你的灯光效果
vixen-sm.jpg 本帖最后由 西门庆33 于 14-7-2013 10:58 PM 编辑

回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 14-7-2013 10:51 PM | 显示全部楼层
不会Arduino的朋友,可以使用Olsen 595控制器,支持64channel,但是使用了printer port来沟通
http://members.shaw.ca/christmaslights/
http://www.doityourselfchristmas ... php?title=Olsen_595





回复

使用道具 举报

 楼主| 发表于 15-7-2013 10:39 PM | 显示全部楼层
DMX Lighting Sequence Player
dmx_autoplay.jpg
有了这个Arduino DMX 播放器 ,省了使用电脑来播放。
只要把Vixen的工程,经过Python脚本(Python script)处理,转换成文本格式(text format),把它保存至SD卡,最后用此SD让Arduino来处理。

回复

使用道具 举报

发表于 18-9-2013 10:35 PM | 显示全部楼层
好好玩的东西哦...   得空来个挑战 !
回复

使用道具 举报

 楼主| 发表于 9-12-2013 08:42 PM | 显示全部楼层
控制多PWM输出
这里使用了TLC5940,每一个channel都是PWWM输出


如果只用一颗TLC5940,CHANNELS_COUNT值设成16。两颗TLC5940,CHANNELS_COUNT值设成32。以此类推
  1. /*
  2.     Basic Pin setup:
  3.     ------------                                  ---u----
  4.     ARDUINO   13|-> SCLK (pin 25)           OUT1 |1     28| OUT channel 0
  5.               12|                           OUT2 |2     27|-> GND (VPRG)
  6.               11|-> SIN (pin 26)            OUT3 |3     26|-> SIN (pin 11)
  7.               10|-> BLANK (pin 23)          OUT4 |4     25|-> SCLK (pin 13)
  8.                9|-> XLAT (pin 24)             .  |5     24|-> XLAT (pin 9)
  9.                8|                             .  |6     23|-> BLANK (pin 10)
  10.                7|                             .  |7     22|-> GND
  11.                6|                             .  |8     21|-> VCC (+5V)
  12.                5|                             .  |9     20|-> 2K Resistor -> GND
  13.                4|                             .  |10    19|-> +5V (DCPRG)
  14.                3|-> GSCLK (pin 18)            .  |11    18|-> GSCLK (pin 3)
  15.                2|                             .  |12    17|-> SOUT
  16.                1|                             .  |13    16|-> XERR
  17.                0|                           OUT14|14    15| OUT channel 15
  18.     ------------                                  --------

  19.     -  +5V from Arduino -> TLC pin 21 and 19     (VCC and DCPRG)
  20.     -  GND from Arduino -> TLC pin 22 and 27     (GND and VPRG)
  21.     -  digital 3        -> TLC pin 18            (GSCLK)
  22.     -  digital 9        -> TLC pin 24            (XLAT)
  23.     -  digital 10       -> TLC pin 23            (BLANK)
  24.     -  digital 11       -> TLC pin 26            (SIN)
  25.     -  digital 13       -> TLC pin 25            (SCLK)
  26.     -  The 2K resistor between TLC pin 20 and GND will let ~20mA through each
  27.        LED.  To be precise, it's I = 39.06 / R (in ohms).  
  28. */

  29. #include "Tlc5940.h"

  30. #define CHANNELS_COUNT 16
  31. int incomingData;

  32. void setup()
  33. {
  34.   Serial.begin(9600);        // set up Serial at 9600 bps
  35.   Serial.println("Vixen + TLC5940 demo");

  36.   Tlc.init(0);  // Call Tlc.init() to setup the tlc.
  37. }

  38. void loop()
  39. {
  40.   if (Serial.available() >= CHANNELS_COUNT) {
  41.     for (int i = 0; i < CHANNELS_COUNT; i++) {
  42.       incomingData = Serial.read(); //read each byte
  43.       incomingData = map(incomingData, 0, 255, 0, 4095); //scale to TLC range.
  44.       Tlc.set(i, incomingData);
  45.     }
  46.     Tlc.update(); //sends the data to the TLCs.  This is when the LEDs will actually change
  47.   }
  48. }
复制代码
本帖最后由 西门庆33 于 9-12-2013 08:51 PM 编辑

回复

使用道具 举报

发表于 4-11-2015 05:32 PM | 显示全部楼层
謝謝大大無私分享
話説 vinex 跟 vixen ……
有亮點吧
好像 yonex 跟 yoxen 醬……
回复

使用道具 举报

Follow Us
 楼主| 发表于 9-11-2015 08:37 PM | 显示全部楼层
netizen 发表于 4-11-2015 05:32 PM
謝謝大大無私分享
話説 vinex 跟 vixen ……
有亮點吧

太粗心,输入错了。都已经错了两年有余,让错误继续保留吧。谢提醒。

回复

使用道具 举报

发表于 9-11-2015 08:43 PM | 显示全部楼层
西门庆33 发表于 9-11-2015 08:37 PM
太粗心,输入错了。都已经错了两年有余,让错误继续保留吧。谢提醒。

抱歉挖大大兩年前的瘡疤
謝謝分享

回复

使用道具 举报


ADVERTISEMENT

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-4-2024 07:06 PM , Processed in 0.067521 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表