🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🕹️ Проект: включение реле резким отклонением джойстика KY-023

В другом проекте на сайте джойстик KY-023 плавно управляет цветом RGB-светодиода. Здесь та же механика используется совсем иначе — как нестандартный выключатель: резкое отклонение рукоятки в одну конкретную сторону (а не плавное удержание в промежуточном положении) включает реле.

Как это работает

Считывание положения такое же, как и в проекте с RGB-светодиодом: KY-023 — это два потенциометра на одной рукоятке, оси X и Y читаются через `analogRead()` как числа от 0 до 1023, где центр соответствует примерно середине диапазона. Разница — в том, что делается с этими числами: вместо плавного пересчёта в яркость цвета код просто проверяет, не превысило ли отклонение по одной оси (например, оси X) заданный порог близко к одному из крайних положений, и если да — включает реле.

Такое использование джойстика как нестандартного концевого выключателя удобно там, где обычная кнопка не подходит по форм-фактору или нужен именно "аналоговый рычаг", отклоняемый до упора, а не нажимаемая кнопка — например, как игровой контроллер для нестандартного механизма.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. KY-023: VRx → A0, VCC → 5V, GND → GND (ось Y и кнопка SW в этом проекте не используются).
  2. Модуль реле: сигнальный вход → D4, VCC → 5V, GND → GND.
  3. Нагрузку подключайте к COM/NO реле строго по инструкции модуля — эта часть схемы может работать с реальным сетевым напряжением и должна быть собрана аккуратно и изолированно.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int X_PIN = A0;
const int RELAY_PIN = 4;
const int TRIGGER_THRESHOLD = 950; // близко к крайнему положению, подберите по месту

void setup() {
  Serial.begin(9600);
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);
}

void loop() {
  int xValue = analogRead(X_PIN);

  bool triggered = xValue > TRIGGER_THRESHOLD; // отклонение в одну конкретную сторону

  digitalWrite(RELAY_PIN, triggered ? HIGH : LOW);

  delay(50);
}

Дополнительных библиотек не требуется — только `analogRead()`. Чтобы реагировать на отклонение в ОБРАТНУЮ сторону, замените `TRIGGER_THRESHOLD = 950` и `>` на малое значение (например, 70) и `<`.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🔢 счётчик полных оборотов энкодера KY-040 со…🔗 самодельный драйвер электромагнитного реле… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 183 ₽ 165 ₽ (экономия 18 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA