fixed distance display

This commit is contained in:
2026-01-26 16:56:02 +03:00
parent aef813e29a
commit 60b9b3b508

View File

@@ -2373,8 +2373,10 @@ void displayDistanceOnModules(float distance, int startModule) {
int digitCount = 0; int digitCount = 0;
if (meters == 0) { if (meters == 0) {
// Show "00" for zero
digits[0] = 0; digits[0] = 0;
digitCount = 1; digits[1] = 0;
digitCount = 2;
} else { } else {
int temp = meters; int temp = meters;
while (temp > 0 && digitCount < availableModules) { while (temp > 0 && digitCount < availableModules) {
@@ -2382,6 +2384,11 @@ void displayDistanceOnModules(float distance, int startModule) {
temp /= 10; temp /= 10;
digitCount++; 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 // Cache last displayed digits per module
@@ -2414,8 +2421,9 @@ void displayDistanceOnModules(float distance, int startModule) {
} }
if (needsUpdate) { if (needsUpdate) {
// Clear only the modules we'll actually use (prevents flashing) // Clear modules - include any extra modules from previous larger digit count
for (int i = 0; i < digitCount && (startModule + i) < MATRIX_MODULES; i++) { int modulesToClear = (digitCount > lastDigitCount) ? digitCount : lastDigitCount;
for (int i = 0; i < modulesToClear && (startModule + i) < MATRIX_MODULES; i++) {
matrix.clearDisplay(startModule + i); matrix.clearDisplay(startModule + i);
} }