multidigit 7 segment display *without* blinking

Hi :slight_smile:

Looking on the net it seems the only way to use a 3-digit 7-segment display is to blink, because you can turn only one digit at a time.

I am just thinking it is a lot of work to do for the arduino/microcontroller just to display one number!
I was wondering if it would be possible to have a more “static” solution like an external chip that could do the blinking and all the arduino would have to do would be to send (one time) the value to be displayed to the chip?

Thanks

Using an external chip such as the TM1637 is the standard solution for driving such displays. Multiplexing by the Arduino is only done for demo, to understand how it works. Display modules with TM1637 on board are commonly available and dirt cheap.

No blinking at all with a shift register for each digit, in daisy chain for all digits. Only 3 output pins required for a display of any length :slight_smile:

holdingpattern:
OP are you using the sevseg library? (Not as snazzy as the TM1637 for sure, but takes most of the heavy lifting out of an individual sketch.)

Out of the sketch... but not out of the Arduino!

ToneArt:
Looking on the net it seems the only way to use a 3-digit 7-segment display is to blink, because you can turn only one digit at a time.

Well, the term is not "blinking", it is "multiplexing" and while not the only way to drive displays, it is the most practical with the use of fewest components, much more practical the larger the display. "Blinking" suggests the effect is visible bt it is not as correctly implemented, it is too fast to have any visual effect unless you move the display across your visual field.

ToneArt:
I am just thinking it is a lot of work to do for the Arduino/ microcontroller just to display one number!
I was wondering if it would be possible to have a more "static" solution like an external chip that could do the blinking and all the Arduino would have to do would be to send (one time) the value to be displayed to the chip?

And you are perfectly correct here - whilst you can do it with a microcontroller, it is generally a bad idea. A basic and versatile chip is the MAX7219.

I suggest you buy a few display modules from eBay to play with. Here is one:

Thank you so much you all - I knew there must be a better way!!
And yes multiplexing that’s the word thanks :smiley:

I started looking at the different possible chips, and I found a couple of them, I was wondering - what is the difference between the TM1637, TM1638, TM1640 and TM1620?

I could only find the datasheets in Chinese apart for the TM1637 (which is clearly the most popular one).
But I would guess the only difference is the amount of “segments x bit” and the “keyboard scan” - could someone explain what this means? thank you!

PS:
Kinda guessing from the chinese datasheets:

  • TM1637 is 8 segments x 6 bit and keyboard scan is 8x2bit
  • TM1638 is 10 segments x 8 bit and keyboard scan is 8x3bit
  • TM1640 is 8 segments x 16 bit and keyboard scan is ? (only DIN and CLK pins)
  • TM1620 is 8 segments x 6 bit OR 10 segments x 4 bit and keyboard scan is ? (only DIN STB and CLK pins)

PS2:
I have not read the full TM1637 datasheet yet - and yes that would probably help me understand what the segments*bit and keyboard scans are - I would still really appreciate a short explanation <3

The TM1637 can control an 6-digit 7-segment display with decimal point (the 8th segment), or read an 8x2 button matrix. The others are likewise. Control of these chips is dead easy with ready-made Arduino libraries. I haven't tried the others you mentioned, never had a need for it.

I do have a stack of unused TM1627. Ordered the wrong ones :slight_smile:

ToneArt:

  • and yes that would probably help me understand what the segments*bit and keyboard scans are - I would still really appreciate a short explanation <3

A segment is one of the “lines” that make up a seven segment digit. One or more LEDs illuminate it. Being a LED (or set of LEDs illuminated together), it will have an anode and a cathode. A multiplexed display will simply apply current through the anode-cathode at the appropriate time to illuminate that segment.

Ok that helps a lot thanks!

So basically the "button matrix" reading function and the 7-segment display controlling function are independant in the chip? That would explain the TM1640/20 which basically do not have the button matrix reading function I guess :slight_smile:

No, the button reading and display scanning on the TM1637 are integrated, not independent.

Alright thanks aarg, but in my case I have no need to read a matrix of buttons, simply controlling the display, can I simply not use the button reading function?

Of course. In fact you can use only one of the functions, as it uses the same pins on the chip.

Anyway, if you get an integrated module there's nothing to worry about. Use the library and it'll just work.

Another option not yet mentioned is ht16k33. Just one of these chips can drive up to 16 7-seg displays or up to 8 14/16-seg displays, or 128 individual LEDs (eg. 16x8 matrix) and can scan a key matrix too. Plus it has the advantage over the tm16xx chips of having a standard i2c interface which can be shared with other sensors, I/o extenders, RTC,... all connected to just 2 Arduino pins. Disadvantages: overkill for just 3 7-seg digits, and not as fast to update as max7219 when many chips are used to drive a larger matrix.

Thank you again guys :slight_smile:

Nice to know about the functions, and PaulRB yes I noticed the TM chip uses a non-standard interface, I'll check the ht16k33 then :wink:

Cheers
Simon

And don't forget that the MAX7219 is probably the easiest of the lot. :grinning: