Live Sports Scoreboard

Hello all,

Just wanted to share my new project. It displays live NHL, NBA, and NFL scores on an Adafruit 32x32 RGB matrix panel. To switch between sports, I used an IR compound eye (found here). Just wave you hand in front of the sensor, and watch the magic happen! (You could easily change this to a button, or something else less magical)

Here are some pics:


Images are great, but only a video can really do this project justice: https://youtu.be/6RPkNZCuvd4

Here’s the code, if anyone wants it: https://github.com/Giamberardinosaur/Particle-Scoreboard/tree/master

Some warnings:

  • Flashing this code will cause any subsequent OTA updates to fail, (at least on the core) so be prepared to flash locally, or factory reset
  • Compiling this code with v0.4.9 of the particle firmware will cause the core to disconnect from the cloud shortly after connecting. Compile with 0.4.7.

EDIT: It seems that both of these issues are fixed by using a Photon

Any insight/help on either of these issues is greatly appreciated.

And finally, I would like to thank @peekay123 for providing me with the core, and for his work on the libraries used.

I am open to any suggestions or advice.

8 Likes

This might be due to longish periodes between dropping out of loop() or your Particle.process() calls.
To test this theory put some Serial.println(millis()) (or the difference between last and current millis()) statements before end of loop() and all Particle.process() statemens and see what your max delay is. If it's about a sec or so, sprinkle some more Particle.process() in there.

  Particle.subscribe("hook-response/getNewScoresNHL", gotScoreData, MY_DEVICES);
  Particle.subscribe("hook-response/getNewScoresNBA", gotScoreData, MY_DEVICES);
  Particle.subscribe("hook-response/getNewScoresNFL", gotScoreData, MY_DEVICES);

this can be unified into one statement

  Particle.subscribe("hook-response/getNewScores", gotScoreData, MY_DEVICES);

since the event name is used as a filter and doesn't have to match completely.

3 Likes

The longest down time between Particle.process() was ~850ms, but even after resolving that, the OTA updates continue to fail. If it helps diagnose the problem, the core’s LED stays solid magenta when attempting to update.

@randomguy1124, I’ll try this out on my panel and Core to see what I can find. The panel display library uses high speed interrupts which may interfere with the updates on a Core. :wink:

Thanks for the help! May also be worth trying it on a photon, just to see if it’s a core-specific issue.

1 Like

@randomguy1124, good idea on testing with Photon. Will do!

1 Like

@randomguy1124, I have designed a new RGB Matrix shield for this year’s San Francisco Maker Fair (May 20-22). A full kit including the shield and RGB panel will be sold at Particle’s booth. Because of that, expect interest in your great post as folks will likely be trying out on their kits! I just wanted to say thanks for this fantastic contribution :wink:

1 Like