Перейти к содержимому
Логические переключатели | Logical Switches

Логические переключатели | Logical Switches

04 марта 2026
Хобби

 

Логические переключатели (Logical Switches)

Цель: создать виртуальные 2‑позиционные переключатели, которые включаются/выключаются по логическому выражению (true/false), и затем использовать их везде, где EdgeTX принимает обычный физический переключатель.

Содержание

Обзор и экран Logical Switches

Что такое логические переключатели

Логические переключатели — это виртуальные 2‑позиционные переключатели, значение которых (ON/OFF или +100/-100) определяется результатом вычисления (true/false) заданного логического выражения.

После настройки логические переключатели можно использовать везде в EdgeTX, где допускается указать физический переключатель.

Экран Logical Switches

 04032026_1_18a3b.png

 Экран Logical Switches.

Действия: +, Edit, Copy, Paste, Clear

Нажатие кнопки + позволяет выбрать неиспользуемый логический переключатель и настроить его.

Выбор уже настроенного логического переключателя открывает действия:

  • Edit — открыть страницу настройки выбранного логического переключателя.
  • Copy — скопировать выбранный логический переключатель.
  • Paste — вставить скопированный логический переключатель в выбранную строку (перезапишет её).
  • Clear — удалить все параметры конфигурации выбранного логического переключателя.
↑ К оглавлению

Настройка логического переключателя

Экран настройки (пример)

04032026_2_caa71.png 

Экран настройки логического переключателя.

Параметры: Func, V1, V2, AND switch, Duration, Delay, Persistence

  • Func — логическая функция, которую вы хотите использовать. Описание функций см. в разделе «Функции логических переключателей».
  • V1 — первая переменная выражения для вычисления.
  • V2 — вторая переменная выражения для вычисления.
  • AND switch — переключатель, который должен быть активен, чтобы логический переключатель вообще вычислялся (то есть «разрешал» свою активацию).
  • Duration — длительность, в течение которой логический переключатель остаётся активным (true) после выполнения условия активации. Если установлено 0.0, логический переключатель будет оставаться активным (true).
  • Delay — задержка между моментом, когда условие активации выполнено, и моментом, когда логический переключатель перейдёт в активное состояние (true).
  • Persistence (только для Sticky Switch) — сохраняет состояние «липкого» переключателя при выключении передатчика или смене модели и восстанавливает сохранённое значение при включении или повторном выборе модели.
↑ К оглавлению

Функции логических переключателей

Обозначения в выражениях

В выражениях a и b обозначают источники (стики, переключатели и т. п.), а x обозначает константы (числовые значения), с которыми выполняется сравнение.

Таблица функций (Expression → Description)

ВыражениеОписание
a=x True, когда источник V1 точно равен константе V2.
a~x True, когда источник V1 «примерно равен» константе V2.
a>x True, когда источник V1 больше константы V2.
a<x True, когда источник V1 меньше константы V2.
|a|>x True, когда модуль источника V1 больше константы V2.
|a|<x True, когда модуль источника V1 меньше константы V2.
AND True, когда оба источника V1 и V2 равны TRUE.
OR True, когда либо V1, либо V2 равен TRUE.
XOR True, когда положения (состояния) источников V1 и V2 не совпадают.
Edge

Кратковременно true, когда источник V1 был активен заданный период времени, а затем деактивировался.

Первое поле времени (T1) в V1 — минимальная длительность активного состояния, необходимая, чтобы V1 мог активировать логический переключатель.

Второе поле времени (T2) — максимальное время, в течение которого V1 может оставаться активным, чтобы логический переключатель был активирован.

Если T2 установлено в --, логический переключатель будет true независимо от того, как долго V1 был активен.

Если T2 установлено в 3, и V1 активен более 3 секунд, логический переключатель не станет true при деактивации источника.

Если T2 установлено в <<, логический переключатель станет true, когда временные условия T1 выполнены, без необходимости деактивировать V1.

a=b True, когда источник V1 равен источнику V2.
a>b True, когда источник V1 больше источника V2.
a<b True, когда источник V1 меньше источника V2.
△>x Кратковременно true каждый раз, когда источник V1 изменяется больше, чем на величину, указанную константой V2.
|△|>x Кратковременно true каждый раз, когда модуль изменения источника V1 больше, чем величина, указанная константой V2.
Timer Кратковременно true каждые xxx секунд. Аргумент V1 — длительность, в течение которой логический переключатель true (активен). Аргумент V2 — время между активациями. Цикл таймера повторяется, пока заданный переключатель активен.
Stky (Sticky) «Прилипает» в состоянии true после того, как переключатель V1 становится активным (true), и остаётся true независимо от положения V1, пока переключатель V2 не будет активирован (true) и не «отлипит» (не деактивирует, false) логический переключатель. Имеет опцию Persistence, позволяющую сохранять значение между перезагрузками или при переключении с модели и обратно.
↑ К оглавлению

Ниже — «раскрытие темы» Logical Switches в EdgeTX: что это такое, как устроены параметры/функции, и как из них собирать удобные сценарии (arm, предупреждения, задержки, защёлки и т. п.).

что такое logical switch?

  • Logical Switch (LS) — это виртуальный 2‑позиционный переключатель, который становится ON/OFF по результату логического выражения (true/false). В EdgeTX он может трактоваться как ON/OFF или как +100/‑100 (если использовать его как вход / input). 1
  • После настройки LS можно использовать везде, где EdgeTX принимает обычный переключатель: в миксах, flight modes, special functions и т. д. 2
  • Сильная сторона LS — это «слой логики»: один раз собрал условие (например, “ARM разрешён только при низком газе + выдержка 0.5s”), а дальше используешь его как обычный тумблер.

1) Где они находятся и как ими управлять (экран Logical Switches)

На странице Model Settings → Logical Switches виден список L01, L02, … и краткая сводка настроек. 2

Действия типовые:

  • + — создать/занять свободную строку LS
  • Edit — редактировать
  • Copy / Paste — копировать/вставить (вставка перезапишет строку)
  • Clear — очистить строку 2

Практический смысл Copy/Paste: вы часто строите «похожие» условия (например, 3 порога батареи), и быстрее клонировать строку и поменять V2, чем собирать заново.


2) Модель мышления: LS = “if … then ON”

У Logical Switch есть:

  1. Функция (Func) — “какой тип проверки делаем”
  2. Аргументы (V1, V2) — источники/константы для проверки
  3. (опционально) AND switch — “разрешающий” переключатель (гейт)
  4. (опционально) Delay/Duration — временная обработка события
  5. (опционально) Persistence — только для Sticky (сохранение состояния) 2

EdgeTX вычисляет логические переключатели постоянно в цикле управления: это не «скрипт по кнопке», а непрерывная логика. 3


3) Параметры настройки — что реально означают

Func / V1 / V2

  • Func выбирает тип логики (сравнение, AND/OR, Edge, таймер, Sticky и т. п.). 2
  • V1/V2 — это входы в выбранную функцию:
    • иногда это источники (стики, тумблеры, телеметрия),
    • иногда константа (число),
    • иногда временные параметры (у Edge/Timer). 2

AND switch (гейт / “маска”)

Полезно думать так:

«LS будет вообще иметь право включаться, только если AND switch = TRUE».

Официально: это переключатель, который должен быть активен, чтобы LS вычислялся “для активации”. 2

Очень частый паттерн: “логика работает только в режиме ARM” или только в конкретном Flight Mode.

Важная практическая тонкость (из мира OpenTX/EdgeTX логики): сначала вычисляются условия функции (V1/V2), потом применяется AND‑гейт; это особенно важно со Sticky. 4

Delay (задержка включения)

Delay — задержка между моментом, когда условие стало истинным, и моментом, когда LS станет true. 2

Для чего нужно:

  • отфильтровать краткие “пики” (просадка батареи при газе),
  • убрать «лишние» промежуточные срабатывания при пролёте через среднее положение 3‑позиционного тумблера (например, голосовые объявления режимов). 5

Duration (удержание)

Duration — сколько LS будет оставаться true после выполнения условия активации; если 0.0 — будет оставаться true (пока условие истинно). 2

Практический смысл Duration:

  • сделать из события короткий “импульс” фиксированной длины (даже если входная логика “дрожит”),
  • “растянуть” краткое событие, чтобы его гарантированно увидела Special Function (озвучка/бип/override). 2

Persistence (только Sticky)

Для Sticky можно включить Persistence — состояние “защёлки” сохранится при выключении аппаратуры/смене модели и восстановится позже. 1


4) Функции Logical Switches — “что выбирать и когда”

EdgeTX в мануале описывает основные функции так (ниже — человеческая интерпретация + типовые применения). 2

A) Сравнения “источник vs число”

  • a = x — ровно равно (редко удобно для аналоговых осей). 2
  • a ~ x — примерно равно (как раз то, что чаще нужно для стиков/крутилок около центра). 2
  • a > x, a < x — пороги: выше/ниже. 2
  • |a| > x, |a| < x — пороги по модулю (например “стик отклонён больше чем на 50% в любую сторону”). 2

Типовые применения:

  • “газ ниже -90” (throttle low),
  • “RSSI ниже порога”,
  • “RxBt ниже 7.2V”,
  • “ручка отклонена достаточно далеко, чтобы считать это командой”.

B) Булева логика “переключатель vs переключатель”

  • AND — оба true
  • OR — хотя бы один true
  • XOR — положения не совпадают (удобно для “ровно один из двух активен”). 2

Здесь V1 и V2 обычно — уже готовые условия (физические тумблеры, LS, flight mode).


C) Edge — детектор события (нажатие/удержание/тайм‑окно)

Edge даёт кратковременное true при событии, связанном со временем:

  • базовая идея: LS становится true, когда V1 был активен нужное время и затем деактивировался;
  • T1 = минимальная длительность активного состояния,
  • T2 = максимальная (или спец‑режимы -- и <<). 2

Ключевые режимы из мануала:

  • T2 = --: сработает независимо от того, как долго V1 был активен
  • T2 = <<: сработает, когда выполнен T1, без необходимости отпускать V1 2

Практические штуки, которые Edge делает очень легко:

  • “короткое нажатие” vs “длинное удержание” моментарной кнопки,
  • “сработай только если тумблер удерживали 1–2 секунды”,
  • “сгенерируй импульс при отпускании”.

D) Сравнения “источник vs источник”

  • a = b, a > b, a < b — сравнивать два источника между собой. 2

Например: сравнить два канала, два стика, телеметрию с GV и т. п.


E) Δ (delta) — “изменилось ли достаточно сильно”

  • △ > x — кратковременно true, если источник изменился больше чем на x
  • |△| > x — то же, но по модулю. 2

Это полезно, когда нужно реагировать не на абсолютное значение, а на факт движения:

  • “крутилку резко повернули — проиграй ‘rates changed’”
  • “ручку дёрнули — триггер события”.

F) Timer — генератор периодических импульсов

Timer: кратковременно true каждые N секунд, пока “разрешающий” переключатель активен; V1 задаёт длительность ON‑импульса, V2 — паузу между импульсами. 2

Использование:

  • повторяющиеся голосовые напоминания (“arming!”, “low battery!” каждые 15 сек),
  • периодический бип, пока включён режим поиска модели.

G) Sticky — “защёлка” Set/Reset (программный тумблер)

Sticky (Stky):

  • становится true, когда V1 становится true (Set),
  • остаётся true независимо от V1,
  • станет false, когда V2 станет true (Reset). 2

Это основа для:

  • “ARM latch” (включил — держится, пока не сбросишь),
  • “двухкнопочный тумблер” (одна кнопка Set, другая Reset),
  • “защита от случайного включения режима при старте”.

5) Инверсия ! (NOT): как читать “!SA-”

Во многих местах EdgeTX можно выбрать инвертированное условие: запись вида !SA- означает “SA не в среднем положении” (т. е. вверх или вниз). 6

Это важно в логике сброса (Sticky) и в “разрешающих” условиях.


6) Практические сценарии (готовые «рецепты»)

Ниже — несколько типовых конструкций, которые реально закрывают 80% «зачем мне Logical Switches».

Сценарий 1: “Низкая батарея без ложных срабатываний”

Проблема: напряжение проседает при резком газе → предупреждения спамят.

Решение:

  1. LS: RxBt < 3.5V (или другой порог) + Delay 2–3s
  2. Special Function: триггер = этот LS, действие = Play Track/Play Value, repeat = раз в N секунд

Идея “задержкой отфильтровать пики” — стандартный подход. 2


Сценарий 2: “Задержка включения сервомеханизма после ARM”

Если нельзя/неудобно делать задержку в микшере, её удобно сделать через LS:

  • L01: “ARM активен” + Delay 5s
  • В миксе сервоканала вместо ARM‑тумблера использовать L01 как Switch

Такой приём (Delay на LS, а потом LS в Switch микса) разбирают на практике на примере сервопривода. 7


Сценарий 3: “Безопасный ARM/Disarm через Sticky + ‘жест’”

Идея: ARM должен требовать осознанного действия (две руки/жест стиками), а DISARM — быть простым.

Один из классических вариантов: собрать “жест” (например, стики в углы + моментарная кнопка), этим Set защёлку (Sticky), а другой командой — Reset. 8

Плюсы:

  • не зависит от положения физического тумблера при включении,
  • резко снижает шанс случайного ARM.

Сценарий 4: “Throttle reverse включается только на низком газе”

Паттерн:

  • L01: Thr < -75 + Delay 0.5s (газ должен быть стабильно низким)
  • L02: Sticky (Set = “включить reverse”, Reset = “выключить reverse”), AND switch = L01 (разрешение только при low‑throttle)

Такая схема обсуждается как рабочая логика безопасности: reverse нельзя «врубить на ходу». 9


Сценарий 5: “Не озвучивать промежуточные положения 3‑позиционного тумблера”

Если Flight Mode/режимы повешены на комбинации тумблеров, при быстром переключении можно “пролетать” через промежуточные условия и получать лишние голосовые объявления.

Лечение: поставить небольшой Delay (например 0.3–0.5s) на LS, которые отвечают за промежуточные режимы — тогда быстрый пролёт не успевает активировать LS. 5


Сценарий 6: “Landing/perching mode” (логика как у Betaflight Air Mode)

Интересный пример “сложной логики поверх простых органов управления”: Edge + Sticky, чтобы временно выключить Air Mode по кнопке и автоматически вернуть при условии (например, после газа). 10

Даже если вам не нужен именно Air Mode, схема полезна как шаблон: momentary → edge‑импульс → sticky‑состояние → special functions/override.


7) Отладка и типичные ошибки (очень полезно на практике)

Быстро проверить, “живой” ли LS

Самый быстрый способ — временно повесить Special Function:

  • Trigger = ваш Lxx
  • Action = “Play Track” (короткий звук) или “Play Value”
    Так вы слышите, когда LS реально стал true. Special Functions прямо поддерживают выбор Logical Switches в качестве триггеров. 11

Частая ошибка со Sticky: “пытался сделать ‘Set когда A и B’, но срабатывает странно”

Надёжный подход: двухступенчатая схема:

  1. L01 = AND(A, B) — “оба условия одновременно”
  2. L02 = Sticky(Set = L01, Reset = …)

Такой паттерн рекомендуют и в обсуждениях EdgeTX, когда ожидаемое “одновременное” поведение не получается из-за того, как именно вы скомбинировали AND switch и Sticky. 12


8) Продвинутый бонус: управлять Sticky из Lua

Если вы пишете Lua‑скрипты (меню/виджеты/автологика), EdgeTX даёт функцию setStickySwitch(id, value), чтобы программно выставить состояние sticky‑логического переключателя. 13

Это открывает интересные вещи:

  • “сбросить ARM‑защёлку при событии из скрипта”,
  • “синхронизировать LS с состоянием внешнего мастера/режима”.

9) Мини‑шпаргалка “что выбирать”

  • Нужно условие по порогу (напряжение/газ/ручка) → a<x, a>x, |a|… 2
  • Нужно “оба условия сразу”  AND 2
  • Нужно событие на нажатие/удержание  Edge 2
  • Нужно защёлкнуть состояние  Sticky (+ при необходимости Persistence) 2
  • Нужно периодически напоминать  Timer 2
  • Нужно реагировать на факт движения ручки/крутилки → △>x / |△|>x 2
Логические переключатели | Logical Switches
27

Похожее в категории "СОФТ"

  • Глобальные переменные | Global Variables

    Цель: использовать Global Variables (GV) как общие параметры модели, которые можно подставлять в Weight, Offset, Diff, Expo, Outputs и сравнения логических переключателей, а также задавать разные значения для разных Flight Modes.