极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 63921|回复: 29

阿癫佬与泼妇玩灯光效果

[复制链接]
发表于 2013-7-16 12:49:23 | 显示全部楼层 |阅读模式
本帖最后由 smching 于 2015-2-3 17:59 编辑


这里教你怎样使用Vixen软件与Arduino控制灯光效果

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

Arduino也没有真正的华文名字,直接翻译,就称它为阿癫佬

在泼妇(软件)与阿癫佬(硬件)的软硬兼施之下,你可以隨心所意的控制灯光效果了。

这里先简单的介绍一下泼妇(Vixen)
Vixen是一个免费的灯光效果设计软件。 通过电脑和一些硬件,任何人都可以设计与音乐同步的灯光效果显示。

Vixen支持不同的控制器,其中通过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了。
  1. /*
  2.   16 Channels Lighting Controller
  3.   By smching ([url=http://ediy.com.my]http://ediy.com.my[/url])
  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[/i]
  31. [i]}[/i]

  32. [i]void loop() {  [/i]
  33. [i]   if (Serial.available() >= CHANNELS_COUNT) {[/i]
  34. [i]      for (int i=0; i<channels_count; i++)="" {="" [/i]
  35. [i]        incomingByte = Serial.read(); // read each byte[/i]
  36. [i]        if (i<12) { //arduino mega consists of 12 PWM[/i]
  37. [i]           analogWrite(Ch, incomingByte[/i][i]);   // Write values to channel pins
  38.         } else {  
  39.            digitalWrite (Ch[i], incomingByte[i]);
  40.         }      
  41.       }
  42.    }
  43. }
复制代码


注意:上面代码编辑将会不成功,也许是copy与paste时,Geek-workshop.com翻译错误吧?在此还保留着错误的代码。我在11#更正了(03/10/2013)

启动与设定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起始播放灯光效果

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

与声频同步



根据声频信号设计你的灯光效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-7-16 13:32:23 | 显示全部楼层
有成品效果更好,谢谢分享~
回复 支持 反对

使用道具 举报

发表于 2013-7-16 14:55:40 | 显示全部楼层
很炫,不过实验代价有点大。。针对的人群有限
回复 支持 反对

使用道具 举报

发表于 2013-7-16 22:03:05 | 显示全部楼层
以前控制舞台灯光不知道这种玩法 悲催··
回复 支持 反对

使用道具 举报

发表于 2013-7-16 22:35:38 | 显示全部楼层
好文,求连载
回复 支持 反对

使用道具 举报

发表于 2013-7-17 18:42:04 | 显示全部楼层
有作品的实际效果视频最好啊
回复 支持 反对

使用道具 举报

发表于 2013-7-18 14:46:47 | 显示全部楼层
mark。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-9-15 21:30:10 | 显示全部楼层
复制代码编译通不过  求解
回复 支持 反对

使用道具 举报

发表于 2013-9-17 17:05:54 | 显示全部楼层
阿癫佬 lz发的都是精品
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-3 21:39:05 | 显示全部楼层
本帖最后由 smching 于 2013-10-3 21:43 编辑
软件-蹄飞 发表于 2013-9-15 21:30
复制代码编译通不过  求解


迟来的回复。
应该是copy与paste时搞错了。

这里更正
  1. void setup()
  2. {
  3.   Serial.begin(9600);        // set up Serial at 9600 bps
  4.   for (byte i=0; i<CHANNELS_COUNT; i++) pinMode(Ch[i], OUTPUT);  // declare channel pin as an output
  5. }
复制代码

  1. void loop() {  
  2.    if (Serial.available() >= CHANNELS_COUNT) {
  3.       for (int i=0; i<CHANNELS_COUNT; i++) {
  4.         incomingByte[i] = Serial.read(); // read each byte
  5.         if (i<12) { //arduino mega consists of 12 PWM
  6.            analogWrite(Ch[i], incomingByte[i]);   // Write values to channel pins
  7.         } else {  
  8.            digitalWrite (Ch[i], incomingByte[i]);
  9.         }      
  10.       }
  11.    }
  12. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-10-3 22:31:51 | 显示全部楼层
MARK。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-10-24 23:27:10 | 显示全部楼层
good is mean hao,
回复 支持 反对

使用道具 举报

发表于 2013-10-26 21:52:52 | 显示全部楼层
搂主帮我看下,”LedTriksUI.dll“这个文件是有的,但是软件不显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-9 21:10:53 | 显示全部楼层
控制多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. }
复制代码



回复 支持 反对

使用道具 举报

发表于 2013-12-11 23:06:35 | 显示全部楼层
能请问下大师vixen2控制arduinoUNO灯光秀,为何我的LED总是点不亮,我发个文件你帮我看下,行不?
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-3 18:06 , Processed in 0.048639 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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