[SOLVED] Bottom right LED of 7-segment display not lighting up

I just finished my code for a 7-segment counter, and everything works fine except for one LED. I've tried checking the wiring, and I am pretty sure the code is identlical to that of the other LEDs.

int aPin = 12;
int bPin = 11;
int cPin = 13;
int dPin = 10;
int ePin = 5;
int fPin = 6;
int gPin = 8;
int DPPin = 4;

void setup() {
  pinMode(aPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  pinMode(dPin, OUTPUT);
  pinMode(ePin, OUTPUT);
  pinMode(fPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(DPPin, OUTPUT);
}

void loop() {
  digitalWrite(aPin, HIGH);
  digitalWrite(bPin, HIGH);
  digitalWrite(cPin, HIGH);
  digitalWrite(dPin, HIGH);
  digitalWrite(ePin, HIGH);
  digitalWrite(fPin, HIGH);
  digitalWrite(gPin, HIGH);
  digitalWrite(DPPin, HIGH);
  nine();
}


void zero(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, LOW);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, HIGH);
  digitalWrite(DPPin, HIGH);
}

void one(){
  digitalWrite(aPin, HIGH);
  digitalWrite(bPin, HIGH);
  digitalWrite(cPin, HIGH);
  digitalWrite(dPin, HIGH);
  digitalWrite(ePin, LOW);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, HIGH);
  digitalWrite(DPPin, HIGH);
}

void two(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, HIGH);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, LOW);
  digitalWrite(fPin, HIGH);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, HIGH);
}

void three(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, HIGH);
  digitalWrite(fPin, HIGH);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, HIGH);
}

void four(){
  digitalWrite(aPin, HIGH);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, HIGH);
  digitalWrite(ePin, HIGH);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, HIGH);
}

void five(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, HIGH);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, HIGH);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, HIGH);
}

void six(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, HIGH);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, LOW);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, LOW);
}

void seven(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, HIGH);
  digitalWrite(ePin, HIGH);
  digitalWrite(fPin, HIGH);
  digitalWrite(gPin, HIGH);
  digitalWrite(DPPin, HIGH);
}

void eight(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, LOW);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, HIGH);
}

void nine(){
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  digitalWrite(ePin, HIGH);
  digitalWrite(fPin, LOW);
  digitalWrite(gPin, LOW);
  digitalWrite(DPPin, LOW);
}

The segment connected to "cPin" blinks twice each time I upload a sketch, and then fades completely when the rest of the LEDs turn on.

Are you using a UNO? In that case pin 13 is already in use for the internal LED. Try another free pin, like 9.

You have two bpins, make one a cpin

  pinMode(bPin, OUTPUT);
  pinMode(bPin, OUTPUT);

Erik_Baas:
Are you using a UNO? In that case pin 13 is already in use for the internal LED. Try another free pin, like 9.

Thanks! This along with @CrossRoads's reply helped me fix it!

"Are you using a UNO? In that case pin 13 is already in use for the internal LED."

D13 drives the LED via a buffer, 1/2 of LM358, so the pin is free to drive external LEDs with no issue.

The only time D13 would be a problem would be when SPI was being used, as the clock comes from D13.

CrossRoads:
D13 drives the LED via a buffer, 1/2 of LM358

Right, I didn't know that, thank you.

I discovered it can also be used as a digital input.

pinMode(13, INPUT_PULLUP);

But then the internal led reacts to the input level of pin 13: HIGH is on, LOW is off.

Erik_Baas:
I discovered it can also be used as a digital input.

Why would it not? :roll_eyes:

Erik_Baas:
But then the internal led reacts to the input level of pin 13: HIGH is on, LOW is off.

What else would you expect? You have an indicator attached to that pin, it indicates whatever the level is on that pin (within reason) however that is generated.

Note that as a result on a UNO, if the pin is not connected and set (defaults) to an INPUT, the pin is floating and the LED may randomly flicker or flash. This is normal and perfectly correct behaviour but sometimes reported with concern.

On a Duemilanove or Nano or Pro Mini however, the LED is simply connected with a resistor so it will load down an input (reading reliably LOW on a 5 V device if not otherwise controlled) and will not flicker.

Paul__B:
Why would it not? :roll_eyes:

I assumed pin 13 was only to be used as an output, because the internal led is connected to it. Didn't know about the buffer, I do now. :wink: