LED blanking out...

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);
}

}

}

Another note.
There is a 115 ohm resistor to the red pin (the upper resistor on each node) and a 200 ohm resistor on the anode (the one below the red on each node).

Thanks for any help/ideas!

Look closely:
i=0
Or
i==0

besides the comparison vs assignment mistake (happens to all of us, gets better with practice :slight_smile: )
check the forward voltage drops of the colors.
Not quite sure what you mean "These pairs are wired in series for reference."
but Green/Blue usually have a higher Vf then Red, like 3.2V vs 2.2, so that might keep them from lighting up also.

What I meant is that I have two LEDs that are in series for each of the nodes. I'll check that out though, quite sure thats it now that someone pointed that out.

Thanks again!

Well, I tried to change that out to the '==', however, that did not work. It is still blanking out. The bottom two don't, only the upper two.

Any other suggestions?

Try wiring the LEDs in parallel instead of in series.

Also post a schematic of what you think you have - I see 12 LEDs across 4 packages, yet only 8 current limit resistors.

As you responded I was literally rewiring them into parallel. I added a second resistor for this purpose. It works perfectly now. My guess is that they were drawing more power than the board can supply them with.

Thanks for the help man, much appreciated.

~ The General

Glad to help.

~ much lower ranked - but I work with a lot of LTs, bunch of Captains, some Majors, and a LtCol.