Selaa lähdekoodia

add loop back

tuanchris 3 kuukautta sitten
vanhempi
sitoutus
9841cacaa9
3 muutettua tiedostoa jossa 32 lisäystä ja 2 poistoa
  1. 1 1
      modules/led/ball_tracking_manager.py
  2. 10 1
      static/js/settings.js
  3. 21 0
      templates/settings.html

+ 1 - 1
modules/led/ball_tracking_manager.py

@@ -61,7 +61,7 @@ class BallTrackingManager:
 
         # Polling timer for position updates
         self._poll_timer = None
-        self._poll_interval = 0.5  # Check position every 0.5 seconds
+        self._poll_interval = 0.2  # Check position every 0.2 seconds (5 Hz)
         self._is_pattern_running = False  # Flag to track if pattern is executing
 
         logger.info(f"BallTrackingManager initialized with {num_leds} LEDs")

+ 10 - 1
static/js/settings.js

@@ -1641,6 +1641,8 @@ async function initBallTracking() {
     const ballTrackingMode = document.getElementById('ballTrackingMode');
     const ballTrackingSpread = document.getElementById('ballTrackingSpread');
     const ballTrackingSpreadValue = document.getElementById('ballTrackingSpreadValue');
+    const ballTrackingLookback = document.getElementById('ballTrackingLookback');
+    const ballTrackingLookbackValue = document.getElementById('ballTrackingLookbackValue');
     const ballTrackingBrightness = document.getElementById('ballTrackingBrightness');
     const ballTrackingBrightnessValue = document.getElementById('ballTrackingBrightnessValue');
     const ballTrackingColor = document.getElementById('ballTrackingColor');
@@ -1656,6 +1658,8 @@ async function initBallTracking() {
             ballTrackingMode.value = data.mode;
             ballTrackingSpread.value = data.config.spread;
             ballTrackingSpreadValue.textContent = `${data.config.spread} LED${data.config.spread > 1 ? 's' : ''}`;
+            ballTrackingLookback.value = data.config.lookback || 0;
+            ballTrackingLookbackValue.textContent = `${data.config.lookback || 0} coords`;
             ballTrackingBrightness.value = data.config.brightness;
             ballTrackingBrightnessValue.textContent = `${data.config.brightness}%`;
             ballTrackingColor.value = data.config.color;
@@ -1684,6 +1688,11 @@ async function initBallTracking() {
         ballTrackingSpreadValue.textContent = `${value} LED${value > 1 ? 's' : ''}`;
     });
 
+    ballTrackingLookback.addEventListener('input', () => {
+        const value = parseInt(ballTrackingLookback.value);
+        ballTrackingLookbackValue.textContent = `${value} coords`;
+    });
+
     ballTrackingBrightness.addEventListener('input', () => {
         const value = parseInt(ballTrackingBrightness.value);
         ballTrackingBrightnessValue.textContent = `${value}%`;
@@ -1700,7 +1709,7 @@ async function initBallTracking() {
                 enabled: ballTrackingEnabled.checked,
                 mode: ballTrackingMode.value,
                 spread: parseInt(ballTrackingSpread.value),
-                lookback: 0,  // Lookback disabled - always use instant tracking
+                lookback: parseInt(ballTrackingLookback.value),
                 brightness: parseInt(ballTrackingBrightness.value),
                 color: ballTrackingColor.value
             };

+ 21 - 0
templates/settings.html

@@ -818,6 +818,27 @@ input:checked + .slider:before {
             </p>
           </label>
 
+          <!-- Look-back Delay -->
+          <label class="flex flex-col gap-1.5">
+            <span class="text-slate-700 text-sm font-medium leading-normal">Look-back Delay</span>
+            <input
+              id="ballTrackingLookback"
+              type="range"
+              min="0"
+              max="15"
+              value="0"
+              class="w-full h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer"
+            />
+            <div class="flex justify-between text-xs text-slate-500">
+              <span>0 (instant)</span>
+              <span id="ballTrackingLookbackValue">0 coords</span>
+              <span>15 coords</span>
+            </div>
+            <p class="text-xs text-slate-500">
+              Number of position updates to delay tracking (creates trailing effect)
+            </p>
+          </label>
+
           <!-- Brightness -->
           <label class="flex flex-col gap-1.5">
             <span class="text-slate-700 text-sm font-medium leading-normal">Brightness</span>