From 60b9b3b5087872de26dfa613e1922cb79fdae651 Mon Sep 17 00:00:00 2001 From: Eugene Date: Mon, 26 Jan 2026 16:56:02 +0300 Subject: [PATCH] fixed distance display --- stairs_arduino.ino | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/stairs_arduino.ino b/stairs_arduino.ino index fa4dd00..be45888 100644 --- a/stairs_arduino.ino +++ b/stairs_arduino.ino @@ -2373,8 +2373,10 @@ void displayDistanceOnModules(float distance, int startModule) { int digitCount = 0; if (meters == 0) { + // Show "00" for zero digits[0] = 0; - digitCount = 1; + digits[1] = 0; + digitCount = 2; } else { int temp = meters; while (temp > 0 && digitCount < availableModules) { @@ -2382,6 +2384,11 @@ void displayDistanceOnModules(float distance, int startModule) { temp /= 10; digitCount++; } + // Ensure minimum 2 digits (show leading zero for values < 10) + if (digitCount == 1 && availableModules >= 2) { + digits[1] = 0; // Leading zero + digitCount = 2; + } } // Cache last displayed digits per module @@ -2414,8 +2421,9 @@ void displayDistanceOnModules(float distance, int startModule) { } if (needsUpdate) { - // Clear only the modules we'll actually use (prevents flashing) - for (int i = 0; i < digitCount && (startModule + i) < MATRIX_MODULES; i++) { + // Clear modules - include any extra modules from previous larger digit count + int modulesToClear = (digitCount > lastDigitCount) ? digitCount : lastDigitCount; + for (int i = 0; i < modulesToClear && (startModule + i) < MATRIX_MODULES; i++) { matrix.clearDisplay(startModule + i); }