1
\$\begingroup\$

Segment E on digit 3 has stopped working for some reason. It was working fine when I first got but just recently stopped working. This segment displays fine on the other digits except digit 2, that one has started to fade. Here is a picture of the display. Any ideas on what could be causing it to be not working and/or how to fix it.enter image description hereenter image description here

\$\endgroup\$
11
  • 3
    \$\begingroup\$ it might be burnt out ,there might be a poor connection or programming error. If you throw us some light on the schematics it will be helpful \$\endgroup\$
    – User323693
    Commented Jan 4, 2017 at 7:08
  • \$\begingroup\$ I have added another picture of the schematic The program is downloaded off the internet and added to the library. \$\endgroup\$ Commented Jan 4, 2017 at 7:18
  • \$\begingroup\$ Have you exceeded rated current? or reversed voltage >>-5V \$\endgroup\$
    – D.A.S.
    Commented Jan 4, 2017 at 7:19
  • \$\begingroup\$ It is connected up to the arduino mega 2560 which is connected to my laptop \$\endgroup\$ Commented Jan 4, 2017 at 7:21
  • \$\begingroup\$ 110 Ohms would be excessive 220 ok \$\endgroup\$
    – D.A.S.
    Commented Jan 4, 2017 at 7:25

4 Answers 4

1
\$\begingroup\$

You have most probably burned the segment in question. The use of only one resistor per digit is the main reason. You need use a resistor for each segment. Furthermore to prevent losing a nex display again use a larger resistor to begin with. With 330 or 390 ohm per segment it will work fine.

With the use of one resistor per digit you can not control the actual segment current and since no diode is equal there will always be one that takes a larger current than the remaining segments. Therefore change over to one resistor per segment.

\$\endgroup\$
1
  • \$\begingroup\$ Only one hints for the OP. If we want to use resistors as little as possible we can set up a circuit with one resistor for segment only for one digit, and then light up the digits in sequence. The persistence of vision does the rest of the job. For example see the picture at page 175 in this datasheet. \$\endgroup\$
    – Antonio
    Commented Mar 8, 2017 at 9:10
0
\$\begingroup\$

From the pictures you seem to be using the one-resistor-per-digit approach. When one of the digits or one of the output pins change somewhat this will probably not work well. Try to use one resistor per segment.

\$\endgroup\$
0
\$\begingroup\$

Any ideas on what could be causing it to be not working and/or how to fix it.

a device / segment failure is certainly a possibility. However, I have done similar things (using 1 resistor per digit) or worse (no resistors at all) and they work just fine.

the simplest and surest way is to take out the display and put the segments to a power source (with a resistor) to test. if that particular segment doesn't light up, you have found the reason.

after that, I would look into the code first and to make sure that there is nothing funky going on there. try to light up just that segment for example to see if indeed there is a problem.

then, I would go after the wiring. those boards aren't that greatest in securing contacts. maybe the pins are bent, maybe the wires aren't where they are supposed to be, ...

\$\endgroup\$
1
  • \$\begingroup\$ If you read the comments on the original post "I have done the test and the led didn't light up" in regards to connecting it directly to a 3.3V power supply \$\endgroup\$
    – user103993
    Commented Mar 8, 2017 at 13:11
0
\$\begingroup\$

Copy and paste the code shown below, this will help you to:

  1. Configure board pin
  2. Display pin
  3. Error in board pin, display pin or jumper wire by replacing all of components one by one, you can add more pins for other configurations.

Code:

int ledDelay = 1000; 
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int pin8 = 8;

void setup()

{

pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
pinMode(pin8, OUTPUT);

}

void loop()

{
digitalWrite(pin2, HIGH); // turn the red light on

delay(ledDelay); // wait 50 ms

digitalWrite(pin3, HIGH); // turn the blue light on

delay(ledDelay); // wait 50 ms

digitalWrite(pin4, HIGH); // turn the blue light on

delay(ledDelay); // wait 50 ms

digitalWrite(pin5, HIGH); // turn the blue light on

delay(ledDelay); // wait 50 ms

digitalWrite(pin6, HIGH); // turn the blue light on

delay(ledDelay); // wait 50 ms

digitalWrite(pin7, HIGH); // turn the blue light on

delay(ledDelay); // wait 50 ms

digitalWrite(pin8, HIGH); // turn the blue light on

delay(ledDelay); // wait 50 ms

return;
}
\$\endgroup\$
1
  • \$\begingroup\$ Note that the code comments are incorrect. \$\endgroup\$
    – Transistor
    Commented Nov 30, 2019 at 8:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.