Building an outdoor scoreboard..

The Dot Matrix Display (DMD) is a 32x16 array of high-brightness LEDs for visually striking effects. [Product Page]
Disc0nect0r
Posts: 3
Joined: Tue Mar 07, 2017 10:33 pm

Re: Building an outdoor scoreboard..

Post by Disc0nect0r » Sun Apr 09, 2017 11:07 pm

Legend :) , Great code there, @mickot did you create your own font for the large numbers ? am currently playing with it as we speak making a few changes like having another DMD for team names near the score permanently

mickot
Posts: 6
Joined: Sun Mar 23, 2014 12:01 pm

Re: Building an outdoor scoreboard..

Post by mickot » Mon Apr 10, 2017 7:18 pm

Standing on the shoulders of giants - I used Joe's spreadsheet to create the font.
Posted it here if you are interested.

Of course, I would re-factor the code if I had to do it again and might even use a Linkit Smart Duo MT7688 as the front end, cheaper than a Yun and can be easily adapted for an external antenna. It is compatible with Arduino Yun sketches and cheap as chips.

https://www.seeedstudio.com/LinkIt-Smar ... -2574.html

-micko
ScoreboardFont.h
(4.54 KiB) Downloaded 99 times

fiqrialdihardiyan
Posts: 1
Joined: Wed May 17, 2017 1:47 am

Re: Building an outdoor scoreboard..

Post by fiqrialdihardiyan » Wed May 17, 2017 2:26 am

i Already have a scoreboard with controller from android apps, but this scoreboard just add the score and not for team's name , anyone can help me to add the code to insert the name team , its actually just add text from android message but i can't . not scrolling text , just normal text send from android (textbox) to arduino and displaying to p10 with dmd2 library. please help me


this is my codes

// Menyisipkan File library
#include <SPI.h>
#include <DMD2.h>
#include <fonts/SystemFont5x7.h>
#include <fonts/MyBigFont.h>
#include <EEPROM.h>

// Mendifinisikan fungsi
#define bCLEAR A1
#define bRIGHT A2
#define bLEFT A0
#define Panjang 2 // Jumlah panjang Display P10
#define Lebar 1 // Jumlah lebar Display P10

SoftDMD dmd(Panjang, Lebar);
// Deklarasi Variable

byte Brightness;
byte debounce = 100;
int rightScore = 0;
int leftScore = 0;
int i;
char dmdBuff[10];
char BT;

// Fungsi Setup, dikerjakan sekali saat arduino reset
void setup() {
Brightness = EEPROM.read(0);
dmd.setBrightness(10);
dmd.selectFont(SystemFont5x7);
dmd.begin();
dmd.clearScreen();
Serial.begin(9600);
pinMode(bCLEAR,INPUT_PULLUP);
pinMode(bRIGHT,INPUT_PULLUP);
pinMode(bLEFT,INPUT_PULLUP);

blinkDisplay();
}
// Fungsi Blink Display, berfungsi untuk membuat display kedap-kedip
void blinkDisplay(){
dmd.clearScreen();
delay(300);
sprintf(dmdBuff,"%d",leftScore);
dmd.selectFont(SystemFont5x7);
dmd.drawString( 13, 8, dmdBuff );
dmd.selectFont(SystemFont5x7);
dmd.drawString( 29, 8, "-" );
sprintf(dmdBuff,"%2d",rightScore);
dmd.selectFont(SystemFont5x7);
dmd.drawString( 40, 8, dmdBuff );
delay(300);
dmd.clearScreen();
delay(300);
sprintf(dmdBuff,"%d",leftScore);
dmd.selectFont(SystemFont5x7);
dmd.drawString( 13, 8, dmdBuff );
dmd.selectFont(SystemFont5x7);
dmd.drawString( 29, 8, "-");
sprintf(dmdBuff,"%2d",rightScore);
dmd.selectFont(SystemFont5x7);
dmd.drawString( 40, 8, dmdBuff);
delay(300);
dmd.clearScreen();
delay(300);
}
//Fungsi GOAL, menampilkan text GOAL saat input dimasukan
void GOAL(){
dmd.clearScreen();
delay(400);
dmd.selectFont(MyBigFont);
dmd.drawString(5, 0, "GOAL!!!" );
delay(400);
dmd.selectFont(MyBigFont);
dmd.clearScreen();
delay(400);
dmd.selectFont(MyBigFont);
dmd.drawString(5, 0, "GOAL!!!" );
delay(3000);
}
// Fungsi Loop, dikerjakan berulang-ulang
void loop() {
if(Serial.available()){
BT = Serial.read();
}
if(digitalRead(bCLEAR) == LOW || BT == 'X') {
delay(debounce);
leftScore = 0;
rightScore = 0;
dmd.clearScreen();
BT = 0;
}

if(digitalRead(bLEFT) == LOW || BT == 'A') {
delay(debounce);
leftScore++;
GOAL();
blinkDisplay();
BT = 0;
}

if(digitalRead(bRIGHT) == LOW || BT == 'B') {
delay(debounce);
rightScore++;
GOAL();
blinkDisplay();
BT = 0;
}

sprintf(dmdBuff,"%d",leftScore);
dmd.selectFont(SystemFont5x7);
dmd.drawString( 13, 8, dmdBuff );
dmd.selectFont(SystemFont5x7);
dmd.drawString( 29, 8, "-" );
sprintf(dmdBuff,"%2d",rightScore);
dmd.selectFont(SystemFont5x7);
dmd.drawString( 40, 8, dmdBuff );
delay(300);

if(digitalRead(bLEFT) == LOW && digitalRead(bRIGHT) == LOW) {
dmd.clearScreen();
delay(debounce);
setBrightness:
Brightness = EEPROM.read(0);
if(digitalRead(bLEFT) == LOW ){delay(debounce); Brightness++;}
if(digitalRead(bRIGHT) == LOW){delay(debounce); Brightness--;}

EEPROM.write(0,Brightness);
dmd.setBrightness(Brightness);
sprintf(dmdBuff,"%3d ",Brightness);
dmd.drawString( 16, 0, dmdBuff );
delay(50);

if(digitalRead(bCLEAR) == 0){dmd.clearScreen(); delay(debounce); loop();}
else{goto setBrightness;}
}
}

User avatar
stryker
Posts: 268
Joined: Sat Jan 14, 2012 2:44 pm

Re: Building an outdoor scoreboard..

Post by stryker » Wed May 17, 2017 4:21 am

fiqrialdihardiyan wrote:
Wed May 17, 2017 2:26 am
i Already have a scoreboard with controller from android apps, but this scoreboard just add the score and not for team's name , anyone can help me to add the code to insert the name team ,
So looking at the code all your Andriod app is currently transmitting a single character command to reset the score, or increment either team's score by one. To send a team name you're going to have to receive a string of characters rather than a single one. You'll also need to have a way to interpret X, A or B differently if received as a command or in the string (or somehow only play teams that don't include those characters, which seems challenging).

The way I've done it with my scoreboard Andriod app is to make all commands it sends delimited by a ~ character. I do have the score calculated by the android app though, so everything it sends are the strings for display, which is a little different to your method but either works fine. So what you might do, is extend your existing command set by adding the delimiting such that your Android app sends
Hteamnametext~ for sending the home team name
Vteamnametext~ for sending the visiting team name

Your existing A, B and X commands won't need to change, but when a H is the command, your code then needs to continue reading characters until it finds a ~, and put all but the ~ into a string for displaying the home team.

That's just one method, but I think it's an easy enough one for you to add. Hope that helps,
Geoff

lancaster100
Posts: 1
Joined: Tue Oct 16, 2018 6:04 pm

Re: Building an outdoor scoreboard..

Post by lancaster100 » Tue Oct 16, 2018 6:12 pm

joevpt wrote:
Fri Sep 21, 2012 11:03 pm
[ UPDATE October 2014:



After using the prototype for 12 months, and tweaking the software to make the most used options easily available, I built a 'production' model earlier this year. The new score board ( I will post pics later ) is built on a 2400mm x 1200mm backboard and enclosed in a PVC window with a polycarbonate front - makes it weather proof. The board now uses 6 arduino boards - one is a master controller which has either a radio daughter board or an ethernet daughter board and is used to communicate with the board. The others all connect on i2c to the master, and they control one piece of the scoreboard ( 5xDMD for home team, 5xDMD for away team, 4xDMD for home score, 4xDMD for away score and 6xDMD for the clock). ( Thats a total of 24 DMDs for the scoreboard - which is why I need so many arduinos to drive it.)

I have two options to control the board.

Originally I built a remote control using the Hope RM12B transceiver (Jeelib have the library). This gives a range of about 130m and I get about two weeks of continuous running from a set of batteries ( an always on LCD on the remote is the power thief) but I use rechargable batteries ( Of course there is no need to leave the RC on at all if not using the scoreboard, so an on/off switch would extend the useful life of the batteries to a couple of months easily). This Hope board sends serial data so is easy to use and its easy to make control messages such as ResetClock(), or ZeroScore(), or displayScore(20,03), or allLedsOn() etc which are short messages but sufficient to control something like a scoreboard. Don't forget to put some test functions on your controller to show all leds on ( to find if any pixels have failed ) and others to display messages from the radio ( for debugging purposes ).

I have an iPhone App called Rugbyscores which I use to track the score and scorers, which can tweet the scores, email them and post them to a website ( the website needs a script to process and display the posting ). I modified the App to also control the scoreboard. This is much cooler, and as the underlying control uses a webpage on the master controller, it is possible to access the interface using any browser once you can access the WiFi network I have included in the board.




To answer some of the questions people ask regularly. I use a 40A 5V power supply. There are lots of these available on the market. I have powered 9 panels from a single supply, and have had no 'hot' supplies. Of course, my DMDs use a very large font ( characters are 30x20 approx) but many pixels are off most of the time. The longest I have had to use the board is about 6 hours ( three games one after the other ) and all three power supplies were running pretty cool.

Pixel failure is not something I have had a lot of problems with. Altogether I've had maybe six pixels fail and all of these were due to dry joints ( touch up with an iron and they work again ). Because of the enclosure I have built, I do not have water damage, but I do have a small 30W panel heater in the unit, as it is out in the weather and dampness would be my biggest worry. So far, no signs of any damage.

I used just one row of 5 panels for each team name. For a rugby pitch, this is too small. If I had the space I think two rows of 6 panels would be perfect. This would be too many panels for a single arduino, so I would need to split the font across two fonts to make it work.

I use two rows of two panels for each score. For Rugby this is perfect, and is clearly visible around the ground. ( This allows me to display up to three digits 30 pixels high with spacing )

I use two rows of three panels for the clock. The clock displays mm:ss and can count up or down from a preset. We let it count up from 0:00 in the first half and from 40:00 in the second half. The same digit font is used for the clock and the scores. The font does not support non digits except for :

To prevent the displays flickering, I do not refresh by clearing and then redrawing. Instead, I clear only the part of the display on which I want to draw a new digit. So on the clock, if the time reads 01:34 and now needs to display 01:35, I clear only the 4 from the display, and draw a five there, leaving the 01:3 alone. This is much easier on the eye..

Hope this helps,

Joe]





I've been reading about( apparently a good first thing to do for any project ), and trying to source ( why build it if you can buy it at a reasonable price) a scoreboard for my local rugby club, and have found almost nothing which could help... until I found these DMD panels.

This summer my son and I have built a range of large ( over 12" tall ) digits and tried using them on bright sunny days, but without exception they failed the magic test - are they clearly visible from the other end of the pitch ( a rugby pitch is 100m long - not counting the in-goal area which is a mininum of 5m at each end of the pitch). The further distance is the diagonal distance from the board position to the viewer which can be up to 140m at our grounds.

We got our hands on a few boards to prototype them, and straight away found two problems. The first is that each board really does take up to 5 amps so paracitic power from a usb port is not a good idea. An external power supply will fix that ( size it for the number of panels you will use).

The second is that the standard DMD library found here assumes that characters are 16 pixels tall and are writen to the board along the length of the board. We fixed this by making a font ( just for digits ), which would display on panel turned 90 degrees ( that is to say, one digit per panel each digit up to 32 leds tall).

We now have the prototype completed, and have tested it at the ground with great success. We used red perspex as a filter in front of the red panel which reduces other visibility issues.

Our display ended up with six panels ( one is missing at the moment as it is not working - but I think a replacement is on the way). The top digits are a countdown timer, the next two digits are the home team score, and the final two digits are the visiting team score. For ease of use, we added a HopeRf module to the board, which allowed us to also have a remote control. The HopeRf board gives a range of at least 100m with an antenna. We used a tactile keypad on the remote and a 2x16 character display. The keypad allows us to customise the button labels, so we assigned the '1' key to be a home-team try, the '4' key to be a home-team conversion, and the '7' key to be a home team kick (penalty or drop kick). Keys 3,6 and 9 do the same for the away team. The * transmits the score to the board. The # key is a score undo button.

The message here is that the panels work fine in bright sunshine without any issues. Of course you need to protect the panels from the weather ( I have a club associate working on a stainless steel enclosure - due in three weeks). Visibility is fine up to about 120 meters for digits, as described above. Had a lot of fun deciding what a digit should look like - nieces, nephews, in-laws, and other family members all had opinions on what looks best..

We all agreed that for a two digit score, the best visual effect was achieved when we left a gap between the panels of about 20mm.

For the finished product we have put together a PCB and for the Remote control we ran out of pins on the standard Arduino board, so we used a Mega. For the homemade board, we intend using an ATMega164P. First live match is the week after we get the enclosure, but the prototype has been active now for two weeks and all is fine ( the power supply gets a little warm - but not hot).

I will add some images once I get it installed and once I have replaced the bad panel.
The type of scoreboard you show in your post is just about the type we need at our association. Is there any possibility you can do one for us and if you can what might the price be? Any help would be most appreciated

Post Reply