Ok. So a friend and I are working on testing some ideas for an led lighting display. For the time being, we are just testing with 8 LEDS in pairs of 2. (4 "nodes"). These pairs are wired in series for reference.
Running the below code for just 1 or 2 nodes, we are able to get the LEDs to flash through the six colors we set. However, activating a 3rd or 4th LED in the code causes issues. Sometimes all will remain lit for the designated color, sometimes not. Every two or three rotations through the loop causes the 3rd or 4th LED to die out until the next color is called up. Then they will re-light.
Any ideas on why this is or how to fix this? We eventually will be controlling 58 nodes across a few megas that are set up as slaves to a master arduino.
Here is the sample code we run:
just a note* : LED 3 was originally in pins 7,8,9 but I had a thought that maybe there was an issue with some of the pins so I was testing it in other pin slots.
/*
First test run of a single LED on the Protoboard.
*/
// FIRST LED
int redLED_A = 1;
int blueLED_A = 2;
int greenLED_A = 3;
// SECOND LED
int redLED_B = 4;
int blueLED_B = 5;
int greenLED_B = 6;
// THIRD LED
int redLED_C = 46;
int blueLED_C = 44;
int greenLED_C = 42;
// FOURTH LED
//int redLED_D = 10;
//int blueLED_D = 11;
//int greenLED_D = 12;
// Color Setting
int red;
int blue;
int green;
void setup()
{
pinMode( redLED_A, OUTPUT);
pinMode( blueLED_A, OUTPUT);
pinMode( greenLED_A, OUTPUT);
pinMode( redLED_B, OUTPUT);
pinMode( blueLED_B, OUTPUT);
pinMode( greenLED_B, OUTPUT);
pinMode( redLED_C, OUTPUT);
pinMode( blueLED_C, OUTPUT);
pinMode( greenLED_C, OUTPUT);
// pinMode( redLED_D, OUTPUT);
// pinMode( blueLED_D, OUTPUT);
// pinMode( greenLED_D, OUTPUT);
}
void loop()
{
for (int i=0; i < 6; i++)
{
if (i = 0)
{
// MAGENTA
digitalWrite(redLED_A, LOW);
digitalWrite(blueLED_A, LOW);
digitalWrite(greenLED_A, HIGH);
digitalWrite(redLED_B, LOW);
digitalWrite(blueLED_B, LOW);
digitalWrite(greenLED_B, HIGH);
digitalWrite(redLED_C, LOW);
digitalWrite(blueLED_C, LOW);
digitalWrite(greenLED_C, HIGH);
// digitalWrite(redLED_D, LOW);
// digitalWrite(blueLED_D, LOW);
// digitalWrite(greenLED_D, HIGH);
delay(1000);
}
if (i = 1)
{
// CYAN
digitalWrite(redLED_A, HIGH);
digitalWrite(blueLED_A, LOW);
digitalWrite(greenLED_A, LOW);
digitalWrite(redLED_B, HIGH);
digitalWrite(blueLED_B, LOW);
digitalWrite(greenLED_B, LOW);
digitalWrite(redLED_C, HIGH);
digitalWrite(blueLED_C, LOW);
digitalWrite(greenLED_C, LOW);
// digitalWrite(redLED_D, HIGH);
// digitalWrite(blueLED_D, LOW);
// digitalWrite(greenLED_D, LOW);
delay(1000);
}
if (i = 2)
{
// YELLOW
digitalWrite(redLED_A, LOW);
digitalWrite(blueLED_A, HIGH);
digitalWrite(greenLED_A, LOW);
digitalWrite(redLED_B, LOW);
digitalWrite(blueLED_B, HIGH);
digitalWrite(greenLED_B, LOW);
digitalWrite(redLED_C, LOW);
digitalWrite(blueLED_C, HIGH);
digitalWrite(greenLED_C, LOW);
// digitalWrite(redLED_D, LOW);
// digitalWrite(blueLED_D, HIGH);
// digitalWrite(greenLED_D, LOW);
delay(1000);
}
if (i = 3)
{
// GREEN
digitalWrite(redLED_A, HIGH);
digitalWrite(blueLED_A, HIGH);
digitalWrite(greenLED_A, LOW);
digitalWrite(redLED_B, HIGH);
digitalWrite(blueLED_B, HIGH);
digitalWrite(greenLED_B, LOW);
digitalWrite(redLED_C, HIGH);
digitalWrite(blueLED_C, HIGH);
digitalWrite(greenLED_C, LOW);
// digitalWrite(redLED_D, HIGH);
// digitalWrite(blueLED_D, HIGH);
// digitalWrite(greenLED_D, LOW);
delay(1000);
}
if (i = 4)
{
// RED
digitalWrite(redLED_A, LOW);
digitalWrite(blueLED_A, HIGH);
digitalWrite(greenLED_A, HIGH);
digitalWrite(redLED_B, LOW);
digitalWrite(blueLED_B, HIGH);
digitalWrite(greenLED_B, HIGH);
digitalWrite(redLED_C, LOW);
digitalWrite(blueLED_C, HIGH);
digitalWrite(greenLED_C, HIGH);
// digitalWrite(redLED_D, LOW);
// digitalWrite(blueLED_D, HIGH);
// digitalWrite(greenLED_D, HIGH);
delay(1000);
}
if (i = 5)
{
// BLUE
digitalWrite(redLED_A, HIGH);
digitalWrite(blueLED_A, LOW);
digitalWrite(greenLED_A, HIGH);
digitalWrite(redLED_B, HIGH);
digitalWrite(blueLED_B, LOW);
digitalWrite(greenLED_B, HIGH);
digitalWrite(redLED_C, HIGH);
digitalWrite(blueLED_C, LOW);
digitalWrite(greenLED_C, HIGH);
// digitalWrite(redLED_D, HIGH);
// digitalWrite(blueLED_D, LOW);
// digitalWrite(greenLED_D, HIGH);
delay(1000);
}
}
}