FredKhoo 发表于 2014-12-18 10:24
你是不是用LED来代替舞台灯光的,如何实现的可以分享一下心得体会吗?
Vixen我用的是3.1版的。
我只会vixen2.1,有个程序给你参考
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); //set the LCD address to 0x37 for a 16 chars and 2 line display
/*
The purpose of this code is to allow the Arduino to use the
generic serial output of vixen lights to control 5 channels of LEDs.
Author: Matthew Strange
Created: 14 October 2010
Modifier: Ben Towner
Modified: 19-OCT-2010
Changes: Addition of 20 Digital On/Off Channels - Setup for Arduino Mega 2560
*/
// PWM Output - ChanX=PWM Pin
int Chan1 = 2;
int Chan2 = 3;
int Chan3 = 4;
int Chan4 = 5;
int Chan5 = 6;
// Digital Output - ChanX=Digital Pin
int Chan6 = 7;
int Chan7 = 8;
int Chan8 = 9;
int Chan9 = 10;
int Chan10 = 11;
int Chan11 = 12;
int Chan12 = 13;
int i = 0; // Loop counter
int incomingByte[19]; // array to store the 25 values from the serial port
//setup the pins/ inputs & outputs
void setup()
{
Serial.begin(9600); // set up Serial at 9600 bps
pinMode(Chan1, OUTPUT); // sets the pins as output
pinMode(Chan2, OUTPUT);
pinMode(Chan3, OUTPUT);
pinMode(Chan4, OUTPUT);
pinMode(Chan5, OUTPUT);
pinMode(Chan6, OUTPUT);
pinMode(Chan7, OUTPUT);
pinMode(Chan8, OUTPUT);
pinMode(Chan9, OUTPUT);
pinMode(Chan10, OUTPUT);
pinMode(Chan11, OUTPUT);
pinMode(Chan12, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
// pinMode(A4, OUTPUT);
// pinMode(A5, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop()
{ // 25 channels are coming in to the Arduino
if (Serial.available() >=11) {
// read the oldest byte in the serial buffer:
for (int i=0; i<11; i++) {
// read each byte
incomingByte = Serial.read();
}
analogWrite(Chan1, incomingByte[0]); // Write current PWM values to LED pins
analogWrite(Chan2, incomingByte[1]);
analogWrite(Chan3, incomingByte[2]);
analogWrite(Chan4, incomingByte[3]);
analogWrite(Chan5, incomingByte[4]);
digitalWrite(Chan6, incomingByte[5]); // Write on/off values to LED pins
digitalWrite(Chan7, incomingByte[6]);
digitalWrite(Chan8, incomingByte[7]);
digitalWrite(Chan9, incomingByte[8]);
digitalWrite(Chan10, incomingByte[9]);
digitalWrite(Chan11, incomingByte[10]);
digitalWrite(Chan12, incomingByte[11]); /*
analogWrite(A0, incomingByte[12]);
analogWrite(A1, incomingByte[13]);
analogWrite(A2, incomingByte[14]);
analogWrite(A3, incomingByte[15]); */
// analogWrite(A4, incomingByte[16]);
// analogWrite(A5, incomingByte[17]); */
}
lcd.setCursor(0, 1);
lcd.print(incomingByte[0]);
lcd.setCursor(0, 2);
lcd.print(incomingByte[1]);
}
|