DeanIsMe / SevSeg

Seven segment display controller library for Arduino
MIT License
325 stars 130 forks source link

unappropriated values on seven segment while using multiple refreshDisplay() #93

Closed AnishKumarAkGk closed 2 years ago

AnishKumarAkGk commented 2 years ago

Hi ,

I have created 5 objects of SevSeg class. And while calling refreshDisplay() using each object, some segment LEDs turned ON with low brightness.
eg: for digit 2, LEDs on seven segment for digit 2 will glow bright and some other segment LEDs glow in low brightness. If I call only one refreshDisplay() then works normal.

My code snippet

SevSeg display1; 
SevSeg display2;  
SevSeg display3; 
SevSeg display4;
SevSeg display5; 
void setup() {
  display1.begin(    COMMON_ANODE,    2,      digitPins1,     segmentPins, resistorsOnSegments);
  display2.begin(   COMMON_ANODE,    2,       digitPins2,    segmentPins, resistorsOnSegments);
  display3.begin(   COMMON_ANODE,    2,       digitPins3,    segmentPins, resistorsOnSegments);
  display4.begin(   COMMON_ANODE,    2,       digitPins4,    segmentPins, resistorsOnSegments);
  display5.begin(   COMMON_ANODE,    2,       digitPins5,    segmentPins, resistorsOnSegments);
}
ISR(TIMER2_COMPA_vect) {
display1.refreshDisplay();
display2.refreshDisplay();
display3.refreshDisplay();
display4.refreshDisplay();
display5.refreshDisplay();
}

void loop() {
display1.setNumber(10);
display2.setNumber(50);
display3.setNumber(22);
display4.setNumber(35);
display5.setNumber(88);
}

Please let me know how can I control different 2 digit seven-segment displays using multiple objects OR is there any other way?

I have to control 5 sets of 2 digit seven segment displays.

Any inputs would be much appreciated.

Thanks in advance.

DeanIsMe commented 2 years ago

You're trying to make multiple seven segment displays that share the same segment pins. This is not supported. All display objects will be trying to manipulate the same segment pins. How many digits do you have in total? With 8 or less digits, you can treat it as a single large display and string together all of your numbers. E.g: display.setNumber(num1 + 1e2*num2 + 1e4*num3 + 1e6*num4); In SevSeg.h, you can increase MAXNUMDIGITS above 8, but you will be limited by the 32 bits in int to 2^31.