Hi, I am using and arduino and vixen software to control my Christmas lights.
My problem is that the vixen software puts out 255 signal for when the light comes on and 0 for when its off. the way i have it set up with the relay board is the complete reverse, the relay board makes on contact with a 0 and goes off with 255. I need my arudino code to change that but I don't know how to. Any help will be greatly appreciated. Here is my code:
int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
int H = 9;
int I = 10;
int J = 11;
int K = 12;
int L = 13;
int M = A0;
int N = A1;
int O = A2;
int i = 0;
int incomingByte[15];
void setup()
{
Serial.begin(9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(H, OUTPUT);
pinMode(I, OUTPUT);
pinMode(J, OUTPUT);
pinMode(K, OUTPUT);
pinMode(L, OUTPUT);
pinMode(M, OUTPUT);
pinMode(N, OUTPUT);
pinMode(O, OUTPUT);
}
void loop()
{
if (Serial.available() >= 15)
{
for (int i=0; i<15;i++)
{
incomingByte = Serial.read();
} // Arduino pins*
digitalWrite(A, incomingByte[0]); // Pin 2*
digitalWrite(B, incomingByte[1]); // Pin 3*
digitalWrite(C, incomingByte[2]); // Pin 4*
digitalWrite(D, incomingByte[3]); // Pin 5*
digitalWrite(E, incomingByte[4]); // Pin 6*
digitalWrite(F, incomingByte[5]); // Pin 7*
digitalWrite(G, incomingByte[6]); // Pin 8*
digitalWrite(H, incomingByte[7]); // Pin 9*
digitalWrite(I, incomingByte[8]); // Pin 10*
digitalWrite(J, incomingByte[9]); // Pin 11*
digitalWrite(K, incomingByte[10]); // Pin 12*
digitalWrite(L, incomingByte[11]); // Pin 13*
digitalWrite(M, incomingByte[12]); // Pin A0*
digitalWrite(N, incomingByte[13]); // Pin A1*
digitalWrite(O, incomingByte[14]); // Pin A2*
}*
}
system
December 4, 2015, 1:14am
2
for (int i=0; i<15;i++)
{
incomingByte[i] = 255 - Serial.read();
}
PaulS:
for (int i=0; i<15;i++)
{
incomingByte[i] = 255 - Serial.read();
}
so replace (int i=0; i<15;i++) with incomingByte = 255 - Serial.read();
if you could make the adjustment in my original code and post it, that would be great!
system
December 4, 2015, 2:19pm
5
cjones1025c:
if you could make the adjustment in my original code and post it, that would be great!
I could if you posted your damned code correctly.
You only need to change the one line. Instead of assigning Serial.read() to the array position, assign 255 - Serial.read().
Here is my code please make your adjustment in the necessary place. Thank you so much!
int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
int H = 9;
int I = 10;
int J = 11;
int K = 12;
int L = 13;
int M = A0;
int N = A1;
int O = A2;
int i = 0;
int incomingByte[15];
void setup()
{
Serial.begin(9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(H, OUTPUT);
pinMode(I, OUTPUT);
pinMode(J, OUTPUT);
pinMode(K, OUTPUT);
pinMode(L, OUTPUT);
pinMode(M, OUTPUT);
pinMode(N, OUTPUT);
pinMode(O, OUTPUT);
}
void loop()
{
if (Serial.available() >= 15)
{
for (int i=0; i<15;i++)
{
incomingByte = Serial.read();
} // Arduino pins
digitalWrite(A, incomingByte[0]); // Pin 2
digitalWrite(B, incomingByte[1]); // Pin 3
digitalWrite(C, incomingByte[2]); // Pin 4
digitalWrite(D, incomingByte[3]); // Pin 5
digitalWrite(E, incomingByte[4]); // Pin 6
digitalWrite(F, incomingByte[5]); // Pin 7
digitalWrite(G, incomingByte[6]); // Pin 8
digitalWrite(H, incomingByte[7]); // Pin 9
digitalWrite(I, incomingByte[8]); // Pin 10
digitalWrite(J, incomingByte[9]); // Pin 11
digitalWrite(K, incomingByte[10]); // Pin 12
digitalWrite(L, incomingByte[11]); // Pin 13
digitalWrite(M, incomingByte[12]); // Pin A0
digitalWrite(N, incomingByte[13]); // Pin A1
digitalWrite(O, incomingByte[14]); // Pin A2
}
}
system
December 6, 2015, 6:21pm
7
void loop()
{
if (Serial.available() >= 15)
{
for (int i=0; i<15;i++)
{
incomingByte = 255 - Serial.read(); // This is the ONLY line you need to change
}
as has already been explained twice.
When I make the revision i get this error:
Arduino: 1.6.4 (Windows 8.1), Board: "Arduino Uno"
sketch_dec06a.ino: In function 'void loop()':
sketch_dec06a:52: error: incompatible types in assignment of 'int' to 'int [15]'
incompatible types in assignment of 'int' to 'int [15]'
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Here, you dropped this:
[i]
You should be able to figure out where it belongs.