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?
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.
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.)
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
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
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.
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
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?
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.