Инструменты пользователя

Инструменты сайта


rotator_control_code

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

rotator_control_code [2026/01/27 17:03] – создано eu8trotator_control_code [2026/01/27 17:24] (текущий) eu8t
Строка 3: Строка 3:
 <code> <code>
 /* /*
-        EW8ZO Rotator Controller v3.45+        EW8ZO Rotator Controller v3.47
                  
         === ОСНОВНЫЕ ФУНКЦИИ ===         === ОСНОВНЫЕ ФУНКЦИИ ===
Строка 36: Строка 36:
                  
         === ПОСЛЕДНИЕ ИЗМЕНЕНИЯ ===         === ПОСЛЕДНИЕ ИЗМЕНЕНИЯ ===
 +        - v3.47: Унифицирована логика overlap (градусы вместо импульсов)
 +        - v3.46: Исправлена логика South overlap (<= 180 вместо < 180)
         - v3.45: Исправлен выход из Change CPR в NORMAL mode         - v3.45: Исправлен выход из Change CPR в NORMAL mode
         - v3.44: Добавлен пункт меню Change CPR для ручной настройки CPR         - v3.44: Добавлен пункт меню Change CPR для ручной настройки CPR
Строка 44: Строка 46:
         - v3.39: Исправлено сохранение chase-mode в EEPROM         - v3.39: Исправлено сохранение chase-mode в EEPROM
         - v3.38: Добавлен toggle chase-mode через энкодер в меню         - v3.38: Добавлен toggle chase-mode через энкодер в меню
-        - v3.37: Исправлена логика сохранения chase-mode 
-        - v3.36: Добавлена поддержка chase-mode (real-time tracking) 
   */   */
       #include <Arduino.h>       #include <Arduino.h>
Строка 73: Строка 73:
       const unsigned long SPLASH_MS = 2000;       const unsigned long SPLASH_MS = 2000;
       const unsigned long SAVE_DEDUP_MS = 1500;             const unsigned long SAVE_DEDUP_MS = 1500;      
-      const char* FW_VERSION = "3.45";+      const char* FW_VERSION = "3.47";
          
       // EEPROM       // EEPROM
Строка 436: Строка 436:
           if (overlapMode == 0) {           if (overlapMode == 0) {
               if (dirShort > 0) {               if (dirShort > 0) {
-                  if (cur tgt) return -1;+                  // Если кратчайший путь CW, но мы в северной зоне и цель южная 
 +                  if (curAz >= 360 && tgtAz < 360) return -1;  // CCW через 0°
               } else {               } else {
-                  if (cur tgt) return +1;+                  // Если кратчайший путь CCW, но мы в северной зоне и цель северная 
 +                  if (curAz <= 0 && tgtAz > 0) return +1;     // CW через 360°
               }               }
               return dirShort;               return dirShort;
Строка 446: Строка 448:
           if (overlapMode == 1) {           if (overlapMode == 1) {
               if (dirShort > 0) {               if (dirShort > 0) {
-                  if (curAz < 180 && tgtAz > 180) return -1;+                  // Если кратчайший путь CW, но мы в южной зоне и цель тоже южная 
 +                  if (curAz <180 && tgtAz > 180) return -1;  // CCW через 0°
               } else {               } else {
-                  if (curAz > 180 && tgtAz < 180) return +1;+                  // Если кратчайший путь CCW, но мы в южной зоне и цель северная 
 +                  if (curAz >180 && tgtAz < 180) return +1;  // CW через 360°
               }               }
               return dirShort;               return dirShort;
Строка 602: Строка 606:
           unsigned long now = micros();           unsigned long now = micros();
              
-          // Фильтр дребезга +          // Фильтр дребезга           
-          if (now - lastUs < 3000) return;+          if (now - lastUs < 20000) return; // 20 мс
           unsigned long delta = now - lastUs;           unsigned long delta = now - lastUs;
           lastUs = now;           lastUs = now;
Строка 1572: Строка 1576:
                  
       }       }
- 
 </code> </code>
rotator_control_code.txt · Последнее изменение: eu8t · В данный момент заблокировано пользователем 216.73.216.25