🛒
0 товар.
0 руб.
Логотип

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

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

🔢 Проект: счётчик полных оборотов энкодера KY-040 со звуковым сигналом

В другом проекте энкодер KY-040 плавно задаёт значение ЦАП шаг за шагом. Здесь та же механика — Arduino считает не шаги, а полные обороты вала, подавая сигнал зуммером на каждый завершённый круг.

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

Определение направления такое же: по сдвигу фаз CLK и DT счётчик шагов растёт или падает. Разница — код накапливает шаги, и когда их число достигает одного полного оборота (обычно 20 щелчков у KY-040, зависит от модели), сигналит зуммером и сбрасывает счётчик.

Число щелчков на оборот зависит от конкретной модели — посчитайте реальные щелчки за видимый полный оборот своего экземпляра.

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

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

  1. KY-040: CLK → D2, DT → D3, VCC → 5V, GND → GND (кнопку SW подключать не нужно).
  2. Зуммер: сигнал → D8, GND → GND.

Скетч

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

const int CLK_PIN = 2;
const int DT_PIN = 3;
const int BUZZER_PIN = 8;
const int STEPS_PER_REV = 20;
int stepCount = 0;
unsigned int revolutions = 0;
int lastClkState;

void setup() {
  Serial.begin(9600);
  pinMode(CLK_PIN, INPUT);
  pinMode(DT_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  lastClkState = digitalRead(CLK_PIN);
}

void loop() {
  int clkState = digitalRead(CLK_PIN);
  if (clkState != lastClkState) {
    if (digitalRead(DT_PIN) != clkState) stepCount++;
    else stepCount--;
    if (abs(stepCount) >= STEPS_PER_REV) {
      revolutions++;
      stepCount = 0;
      tone(BUZZER_PIN, 2000, 100);
    }
  }
  lastClkState = clkState;
}
                

Дополнительных библиотек не требуется. Если сигнал звучит раньше/позже реального оборота — поправьте `STEPS_PER_REV`.

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

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

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

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

← 🔄 регулировка скорости DC-мотора…🕹️ включение реле резким отклонен… →

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

Все 2 товара сразу: 157 ₽ 141 ₽ (экономия 16 ₽)

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

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

Корзина

Поиск


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