Code:
/*
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 = 22;
int Chan7 = 23;
int Chan8 = 24;
int Chan9 = 25;
int Chan10 = 26;
int Chan11 = 27;
int Chan12 = 28;
int Chan13 = 29;
int Chan14 = 30;
int Chan15 = 31;
int Chan16 = 32;
int Chan17 = 33;
int Chan18 = 34;
int Chan19 = 35;
int Chan20 = 36;
int Chan21 = 37;
int Chan22 = 38;
int Chan23 = 39;
int Chan24 = 40;
int Chan25 = 41;
int i = 0; // Loop counter
int incomingByte[25]; // 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(Chan13, OUTPUT);
pinMode(Chan14, OUTPUT);
pinMode(Chan15, OUTPUT);
pinMode(Chan16, OUTPUT);
pinMode(Chan17, OUTPUT);
pinMode(Chan18, OUTPUT);
pinMode(Chan19, OUTPUT);
pinMode(Chan20, OUTPUT);
pinMode(Chan21, OUTPUT);
pinMode(Chan22, OUTPUT);
pinMode(Chan23, OUTPUT);
pinMode(Chan24, OUTPUT);
pinMode(Chan25, OUTPUT);
}
void loop()
{ // 25 channels are coming in to the Arduino
if (Serial.available() >= 25) {
// read the oldest byte in the serial buffer:
for (int i=0; i<26; i++) {
// read each byte
incomingByte[i] = 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]);
digitalWrite(Chan13, incomingByte[12]);
digitalWrite(Chan14, incomingByte[13]);
digitalWrite(Chan15, incomingByte[14]);
digitalWrite(Chan16, incomingByte[15]);
digitalWrite(Chan17, incomingByte[16]);
digitalWrite(Chan18, incomingByte[17]);
digitalWrite(Chan19, incomingByte[18]);
digitalWrite(Chan20, incomingByte[19]);
digitalWrite(Chan21, incomingByte[20]);
digitalWrite(Chan22, incomingByte[21]);
digitalWrite(Chan23, incomingByte[22]);
digitalWrite(Chan24, incomingByte[23]);
digitalWrite(Chan25, incomingByte[24]);
}
}
Bookmarks