Skip to content

v2.1 "OTD" and bug fixes

Choose a tag to compare

@ChuckBuilds ChuckBuilds released this 24 Jul 00:46
· 429 commits to main since this release

Summary

  • A lot of bug fixes and some formatting improvements
  • OTD = "Of The Day" , more on that in a bit
  • A ton of font refactoring because bitmap glyphs are hard
  • Stock Chart configurations (scroll speed, scroll display, toggle chart)
  • Small font and placement adjustments across several displays

OTD = Of The Day Display

πŸš€ Key Features

  • πŸ“š Multiple Categories: Run multiple "of the day" displays simultaneously (Word of the Day, Language Learning, Bible Verses, etc.)
  • πŸ”„ Smart Rotation: Two-level rotation system with subtitle/description alternation and category switching
  • πŸ“… Daily Content: Each day shows different content based on the day of the year (1–366)
  • βš™οΈ Highly Configurable: Customize display intervals, rotation timing, and content categories

πŸ“‹ What's Included

Core Implementation

  • src/of_the_day_manager.py: Main manager class handling display logic, rotation, and content loading
  • of_the_day/OF_THE_DAY_GUIDE.md: Comprehensive documentation and setup guide

Sample Content

  • of_the_day/word_of_the_day.json: 366 vocabulary words with definitions and examples
  • of_the_day/slovenian_word_of_the_day.json: 366 Slovenian words with English translations

Configuration Integration

  • Updated config/config.json with "of_the_day" section
  • Integrated with src/display_controller.py for seamless display rotation
  • Added to display duration management system

πŸŽ›οΈ Configuration

Add this to your config/config.json:

{
  "of_the_day": {
    "rotation_interval": 30,
    "subtitle_interval": 10,
    "categories": ["word_of_the_day", "slovenian_word_of_the_day"]
  }
}

πŸ”„ Rotation System

The system features a sophisticated two-level rotation:

  • Subtitle/Description Rotation: Within each category, alternates between subtitle and description every 10 seconds
  • Category Rotation: Switches between different categories every 30 seconds

Example Display Flow:

[Word of the Day] β€” Subtitle ➑️ Description ➑️ [Slovenian Word of the Day] β€” Subtitle ➑️ Description ➑️ ...

πŸ“Š Data Format

Each category uses a JSON file with this structure:

{
  "1": {
    "title": "EXAMPLE",
    "subtitle": "Definition or Translation",
    "description": "Full explanation or use case"
  }
}

🎯 Use Cases

Educational Content

  • Vocabulary Word of the Day: Expand your vocabulary with 366 carefully selected words
  • Language Learning: Learn new words in different languages (Slovenian included)
  • Math Problem of the Day: Daily mathematical challenges
  • Science Fact of the Day: Interesting scientific facts and discoveries

Inspirational Content

  • Bible Verse of the Day: Daily scripture and spiritual guidance
  • Quote of the Day: Motivational and inspirational quotes
  • Affirmation of the Day: Positive daily affirmations
  • Meditation of the Day: Daily meditation prompts

Professional Development

  • Programming Tip of the Day: Daily coding tips and best practices
  • Business Quote of the Day: Business wisdom and insights
  • Leadership Lesson of the Day: Leadership and management insights

πŸ› οΈ Technical Features

  • Performance Optimized: Data files loaded once at startup, minimal display updates
  • Error Handling: Comprehensive logging and error recovery
  • Font Integration: Uses custom BDF fonts for optimal LED matrix display
  • Text Wrapping: Intelligent text wrapping for long descriptions

πŸ“– Documentation

Complete documentation is available in:

  • of_the_day/OF_THE_DAY_GUIDE.md

Includes:

  • Setup instructions
  • Configuration options
  • Custom category creation
  • Troubleshooting guide

Always a work in progress, let me know if something is broken or behaving unexpectedly.