I'm looking into the feasibility and cost of making an electronic dot-matrix scoreboard for my hurling club. I'm hoping to be able to digitally display time, two four digit scores, and two 11 character names. Using the layout in the attached image I'm expecting a minimum of 686 LEDs to control. Input could be very basic but would ideally like to have a wireless remote of some sort to increment scores and start/stop the timer.
Right now though, I'm just trying to think how I'd use an arduino board to control 686 leds, even if I break them down into the 35 matrices I'm not sure how to do it. I assume that I'd be setting on/off on matrix addresses and refreshing at a high rate but I don't know how I'd go about programming a matrix either.
Thanks Paul, I had thought about that but I'd have to buy 5 of these to make the width of the board and it's far more LEDs than I need. Also, I may be using larger lights than LEDs, not sure yet. I feel like I could get by cheaper than the pre-assembled boards, but I'm not sure.
Looking at it I guess I'd be looking at multiple Arduino boards. Taking the top and bottom half of the board as separate units, I need to control 7 rows and 76 columns, that puts me up to 83 pins and it looks like 54 is the most available on an Arduino. I'm racking my brain trying to remember my once upon a time computer logic design but is there a way I can drop the number of pins I need ot control the matrix?
If I could design a circuit that would illuminate 1 to a handful of the bulbs at a time would the refresh rate be fast enough to make it appear to be a constant message? Or am I getting into component costs that make 10 of the boards Paul linked cheaper?
Your layout shows 7-segment characters. Is that what you are after, or will they be 4x7 characters?
You really need to be controlling external hardware.
One way is to have 2 shift registers that drive data for the vertical columns - the anodes for all LEDs would be connected in rows across the display. Separate shift registers would then connect the cathodes of each column. Multipexing would be:
Drive the anode data for column 1 - bring that cathode low for 400uS, then off.
Drive the anode data column 2 -bring the column 2 cathode low for 400uS, then off.
Use SPI.transfer( ) to move the data into place a 30 Hz refresh rate can be achieved.
Using high efficiency LEDs the display can be nice & bright despite the short on time.
Alternately, use 2 sets of driver hardware for double the refresh rate.
Simple Uno and external shift registers is you need.
Now that I think about it I guess those are 7-segment letters. Not sure why I was thinking every light would be independent; so, thanks for the nudge there, that simplifies things since some of these will be wired together.
I've got to go learn about shift registers now but that sounds a lot easier than the 4 to 16 and the 7 to 128 demux I was drawing up last night. The truth table was going to be insane.
Here is part of a schematic - use shift registers in place of arduino outputs to drive the anode, and then just more TCIP6B595s across the bottom for the cathodes.
Use a part like this
for the anode shift registers, good for 20mA output current, make the LEDs nice & bright.
What I was thinking was doing all 16 bits top & bottom together, hence 2 shift registers for the anodes.
Another option is to use a bunch of MAX7219s, each can drive 8 digits/characters.
Use No Decode mode, define your own fonts:
Then just need to write to a register to change what is displayed, each MAX7219 takes care of the multiplexing for its 8 characters.
If one is making a large display with 10 mm Leds, for example, then hamd soldering is really the only way to go.
I think a custom layout of say 5 wide by 8 tall would allos any letter to be displayed and still be vontrollex by max7219. Have 8 characters driven by 8 chips for example with physical space between letters vs a blank column of Leds.