tuning display settings

trying to fix display
This commit is contained in:
Chuck
2025-04-07 20:40:43 -05:00
parent 635ce7a88e
commit f2fff9c0c9
2 changed files with 27 additions and 13 deletions

View File

@@ -35,7 +35,7 @@ class DisplayManager:
# Hardware configuration
hardware_config = self.config.get('hardware', {})
options.rows = hardware_config.get('rows', 32)
options.cols = hardware_config.get('cols', 64)
options.cols = hardware_config.get('cols', 32) # Each panel is 32 columns
options.chain_length = hardware_config.get('chain_length', 2)
options.parallel = hardware_config.get('parallel', 1)
options.hardware_mapping = hardware_config.get('hardware_mapping', 'adafruit-hat-pwm')
@@ -49,21 +49,22 @@ class DisplayManager:
options.multiplexing = hardware_config.get('multiplexing', 0)
options.disable_hardware_pulsing = hardware_config.get('disable_hardware_pulsing', True)
options.show_refresh_rate = hardware_config.get('show_refresh_rate', False)
options.limit_refresh_rate_hz = hardware_config.get('limit_refresh_rate_hz', 100)
options.limit_refresh_rate_hz = hardware_config.get('limit_refresh_rate_hz', 120)
# Runtime configuration
runtime_config = self.config.get('runtime', {})
options.gpio_slowdown = runtime_config.get('gpio_slowdown', 3)
options.gpio_slowdown = runtime_config.get('gpio_slowdown', 4)
logger.info("Setting GPIO slowdown to: %d", options.gpio_slowdown)
# Initialize the matrix
logger.info("Initializing RGB matrix with options...")
self.matrix = RGBMatrix(options=options)
logger.info("RGB matrix initialized successfully")
logger.info(f"Matrix dimensions: {self.matrix.width}x{self.matrix.height}")
# Apply rotation if specified
self.rotation = hardware_config.get('rotation', 0)
logger.info("Display rotation set to: %d degrees", self.rotation)
# Create image with full chain width
self.image = Image.new('RGB', (self.matrix.width, self.matrix.height))
self.draw = ImageDraw.Draw(self.image)
def _draw_text(self, text, x, y, font, color=(255, 255, 255)):
"""Draw text on the canvas."""
@@ -75,9 +76,22 @@ class DisplayManager:
self.draw.rectangle((0, 0, self.matrix.width, self.matrix.height), fill=(0, 0, 0))
self.matrix.SetImage(self.image)
def draw_text(self, text: str, x: int, y: int, color: tuple = (255, 255, 255)):
"""Draw text on the display."""
def draw_text(self, text: str, x: int = None, y: int = None, color: tuple = (255, 255, 255)):
"""Draw text on the display with automatic centering."""
self.clear()
# Get text size
text_bbox = self.draw.textbbox((0, 0), text, font=self.font)
text_width = text_bbox[2] - text_bbox[0]
text_height = text_bbox[3] - text_bbox[1]
# Calculate center position if not specified
if x is None:
x = (self.matrix.width - text_width) // 2
if y is None:
y = (self.matrix.height - text_height) // 2
logger.info(f"Drawing text '{text}' at position ({x}, {y})")
self.draw.text((x, y), text, font=self.font, fill=color)
self.matrix.SetImage(self.image)