RGB LED Matrix 64x32 Scoreboard
by buildbakberter in Circuits > Arduino
1640 Views, 2 Favorites, 0 Comments
RGB LED Matrix 64x32 Scoreboard
My youngest son is the biggest basketball fan. He asked for a scoreboard similar to those at his basketball arena. I looked into using strips of WS2812 LED's but then decided on using a P6 RGB LED Matrix. The scoreboard is basically used as a family scoreboard for parties etc. I intend to use it as an exercise timer (counting up mode) also. The main features are:
- 2 Modes (count Down OR count Up)
- Adjustable time periods (max = 90 minutes. saved to EEPROM)
- Adjustable team names that save to EEPROM (5 character per team max due to matrix size limitations)
- Timed Out buzzer
- Pause timer
- Custom sized Numbers (non Matrix Library standard numbers to utilize maximum matrix size)
- Last saved state
- If Paused then turned Off, team scores and time progress will be retrieved on next power up.
- 3D printed enclosure with bezel
Supplies
- Adafruit RGB LED P6 Matrix
- includes supplied ribbon cable and power connection cabling
- Arduino MEGA 2560
- Arduino 1 channel relay
- 5V buzzer
- 5VDC / 3 Amp power supply
- I used a raspberry PI4 3A power supply with inline switch
- 2 X Slider switches
- for Count up/down mode selection and adjust team name mode
- 6 X Momentary N.O single pole switches (varied colors is best)
- various 3mm (M3) screws/nuts and mounting spacer standoffs
- Access to a 3D printer capable of 390mm X 210mm prints for the enclosure
- Arduino Header pins, Hookup Wire and Heat Shrink
- Soldering Iron and Solder
- Battery drill
Print 3D Enclosure
I drafted and sent these files to an online Print Service. I had them print in Black PLA with a 20% infill. I would probably next time use higher infill (30%) although at 20% structure is sound and robust. The only issues I've found with attached STL's are:
- the top Enclosure surface prints a little too thick for Momentary Switch button threads so these I glued in (not ideal but it works). I would either adjust these STL to narrow the Top thickness OR just mount the switches on the sides where there should be enough thread engagement......or just ensure the switches you buy have long enough thread which maybe the best option.
- the Enclosure sides, due to the thinner Bezel receptacle section, print a separation (gap/not joined) where the thicker side transitions to the thinner bezel receptacle. However with the Bezel in place this doesn't seem to be problematic and the structure still seems more than adequate.
- Middle mounts for the RGB Led matrix have their 'as printed' screw holes a little out. in the end I didn't mount using middle Matrix screws. using the four remaining mounts seems more than adequate and has been no issue. You could drill these holes to suit if you wish to use all six mounting points however.
I will endeavor to fix these issues and attached STL's but as they are this has not been an issue for me. The Bezel surround is sized to fit/retain a piece of acrylic sheet to act as a LED Light diffuser. I didn't end up wanting this however the fitted bezel does finish the enclosure of well enough without diffuser. Suggest use Bezel in either case.
Mount Inner Hardware Components
Do this step before Mounting the RGD LED Matrix as you don't want to risk drilling extra holes for your hardware and drilling through a Mounted RGB LED Matrix. The Arduino MEGA holes fit no problems however as depending on your Relay/Buzzer sourced, you will have to drill additional holes to mount. Use M3 threads and mounting spaces standoffs.
Now is also best time to drill extra holes for your:
- 6 x momentary switches (note: suggest using sides for location for adequate thread engagement or purchase buttons that will ensure adequate thread engagement along the top of enclosure)
- 2 x Slider switches
- Power Supply connection
- Bezel Fixing screws (4 x M3 bolt and nut through bezel/enclosure on top and bottom of enclosure only)
Screw/fix RGB Matrix to the Enclosure
Ensure RGB Matrix is installed correct orientation (for me it meant that the RGB LED Matrix 16 pin header 'In' is on opposite side to the hardware mounting block.
Connect Wiring
Connect wiring and solder where required to the attached schematic. There is quite a bit of wiring so be patient. ensure Power Supply lines from the power supply connection to the Matrix supply are adequate. I used the supplied with matrix power plug wires and soldered those to my power supply connection. Double check all wiring lines and polarity before commencing next step!!
For the data wiring I sourced a male 16 Pin header plug to connect to the supplied Matrix Data Ribbon cable. I soldered this 16 Pin header plug to my Arduino wiring connections. This means I can easily connect/disconnect the data ribbon cable supplied with the matrix (disconnect this ribbon for uploading Arduino Code to avoid any potential issues to the matrix while uploading with low power PC USB)
Upload Arduino Code
For this you will need to install to your Arduino Program these libraries below:
- DF_Robot Matrix Library (located here)
- EEPROM library (located here)
Ensure you disconnect the RGB LED Matrix ribbon cable prior to upload. The code utilizes the generic text from the DF_ROBOT library but ive written 2D int arrays to provide a custom digit sizes.
In the setup section just below command 'matrix.Begin;', you will see several commented lines where values are written to EEPROM in EEPROM locations 0 & 10-14 & 20-24. These are where the time period and team names are stored. they are stored there as an integer. I suggest doing two uploads of this code. one with these lines uncommented so they upload as code (this will store initial team names and time period). the second upload these lines should be commented out (this ensures that if names and periods are changed via switches ongoing they will save).
- EEPROM Location 0:
- I've written '30' so initial timer will be 30 minutes. change to suit. Remember this can be changed anytime later on using the buttons when its running.
- EEPROM Location 10-14:
- Home team name (value 1=A/2=B/3=C/4=D......etc). You will see initial if uncommented will be 'Home'. (27 = Blank space). Remember this can be changed anytime later on using the buttons when its running.
- EEPROM Location 20-24:
- Away team name (value 1=A/2=B/3=C/4=D......etc). You will see initial if uncommented will be 'Away'. (27 = Blank space). Remember this can be changed anytime later on using the buttons when its running.
- EEPROM Locations 30/31/40/41:
- Ongoing progressive time and scores EEPROM store. just leave as is (don't change values)
The Code may have one or two redundant variables declared from when testing with an LCD but no big issue. works no probs.
Downloads
Reconnect Ribbon Cable and Switch On
PDF in Step 4 provides Instructions on Use. Let me know if you've found it useful. Cheers.