- Show support on Youtube: https://www.youtube.com/@ChuckBuilds
- Stay in touch on Instagram: https://www.instagram.com/ChuckBuilds/
- Want to chat or need support? Reach out on the ChuckBuilds Discord: https://discord.com/invite/uW36dVAtcT
- Feeling Generous? Support the project:
- Github Sponsorship: https://github.com/sponsors/ChuckBuilds
- Buy Me a Coffee: https://buymeacoffee.com/chuckbuilds
- Ko-fi: https://ko-fi.com/chuckbuilds/
A LEDMatrix plugin that displays a countdown to the next Olympics (summer or winter) with an Olympics logo. Once the Olympics starts, it automatically switches to countdown to the closing ceremony.
Screenshot Preview:
- Automatic Olympics Detection: Automatically determines the next Olympics (summer or winter)
- Dynamic Countdown:
- Before Olympics: Countdown to opening ceremony
- During Olympics: Countdown to closing ceremony
- Olympics Logo: Displays Olympics logo (image or programmatically drawn Olympic rings)
- Adaptive Text Display: Automatically adjusts text size and layout for different display sizes
- Multiple Olympics Support: Includes dates for upcoming Olympics through 2032
- Open the LEDMatrix web interface (
http://your-pi-ip:5000) - Open the Plugin Manager tab
- Find Olympics Countdown in the Plugin Store section and click Install
-
Copy the plugin from the monorepo:
cp -r ledmatrix-plugins/plugins/olympics /path/to/LEDMatrix/plugin-repos/
-
Enable the plugin in
config/config.json:{ "olympics": { "enabled": true, "display_duration": 15 } }
The plugin supports the following configuration options:
enabled(boolean, default:false): Enable or disable the plugindisplay_duration(number, default:15): How long to display the countdown in seconds (1-300)update_interval(integer, default:3600): How often to update the countdown in seconds (60-86400). Default is 1 hour since the countdown changes daily.
text_color(array, default:[255, 255, 255]): RGB color for the countdown text (default: white)logo_size(integer, optional): Size of the Olympics logo in pixels (8-64). If not specified, size is auto-calculated based on display height.
transition(object): Transition configurationtype(string): Transition type -redraw,fade,slide,wipe,dissolve,pixelate(default:redraw)speed(integer): Transition speed 1-10 (default:2)enabled(boolean): Enable transitions (default:true)
{
"olympics": {
"enabled": true,
"display_duration": 20,
"update_interval": 3600,
"text_color": [255, 255, 255],
"logo_size": 24,
"transition": {
"type": "fade",
"speed": 3,
"enabled": true
}
}
}- Before Olympics: Shows "N DAYS UNTIL [SUMMER/WINTER] OLYMPICS"
- During Olympics: Shows "N DAYS UNTIL CLOSING"
- On Opening Day: Shows "OLYMPICS OPENING TODAY"
- On Closing Day: Shows "OLYMPICS CLOSING TODAY"
- Olympics logo is displayed on the left half of the display
- Countdown text is displayed on the right half, stacked vertically
- Layout automatically adjusts for different display sizes
The plugin includes dates for:
- Winter Olympics 2026: Milan-Cortina (Feb 6-22, 2026)
- Summer Olympics 2028: Los Angeles (July 14-30, 2028)
- Winter Olympics 2030: TBD (placeholder dates)
- Summer Olympics 2032: Brisbane (July 23 - Aug 8, 2032)
The plugin will look for an Olympics logo image in the following locations:
olympics-logo.pngolympics logo.pngolympics-icon.pnglogo.pngassets/olympics-logo.pngassets/logo.png
If no image is found, the plugin will automatically draw the Olympic rings programmatically as a fallback.
Note: You can provide your own Olympics logo image by placing it in the plugin directory with one of the names above.
- Python 3.7+
- PIL/Pillow (for image handling)
- LEDMatrix 2.0.0 or higher
No additional Python packages are required beyond what LEDMatrix provides.
If the logo image doesn't appear:
- Check that the image file exists in the plugin directory with one of the supported names
- The plugin will automatically fall back to programmatic Olympic rings if the image is missing
- Verify file permissions allow reading the image file
- The countdown updates based on
update_interval(default: 1 hour) - The countdown changes once per day, so hourly updates are sufficient
- Check the plugin logs for any errors
- The plugin automatically adjusts text size and layout based on display dimensions
- If text still doesn't fit, reduce
logo_sizein configuration - The plugin automatically adjusts layout based on display dimensions
olympics/
├── manifest.json # Plugin metadata
├── manager.py # Main plugin class
├── config_schema.json # Configuration schema
├── README.md # This file
├── requirements.txt # Python dependencies
└── assets/ # Optional: Olympics logo image
└── olympics-logo.png
Test the plugin using the LEDMatrix emulator:
python run.py --emulatorThis plugin follows the same license as the LEDMatrix project.
ChuckBuilds
1.0.0