
Интернет-магазин «Неглупый Дом»
Энкодер KY-040 вращением плавно меняет яркость LED-ленты или лампы 12В — MOSFET-модуль IRF520 управляет мощностью через ШИМ без потерь на резисторе, в отличие от простого потенциометра.
KY-040 — поворотный инкрементальный энкодер: внутри два контакта (CLK и DT), которые замыкаются по очереди со сдвигом фазы при вращении оси. Сравнивая, какой из двух контактов изменился первым на каждом "щелчке", можно точно определить направление вращения — по часовой стрелке или против, в отличие от простого потенциометра, который лишь показывает абсолютное положение оси без понятия "направление".
MOSFET-модуль IRF520 управляет яркостью через ШИМ (широтно-импульсную модуляцию): вместо того чтобы гасить часть напряжения на резисторе (как в простом реостатном диммере, где лишняя энергия превращается в тепло), транзистор быстро включает и выключает питание нагрузки тысячи раз в секунду, и именно соотношение времени включения к выключению (`analogWrite()`) определяет среднюю яркость — энергоэффективнее и без нагрева регулирующего элемента.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int clkPin = 2;
const int dtPin = 3;
const int pwmPin = 9;
int lastClk;
int brightness = 128;
void setup() {
Serial.begin(9600);
pinMode(clkPin, INPUT);
pinMode(dtPin, INPUT);
pinMode(pwmPin, OUTPUT);
lastClk = digitalRead(clkPin);
}
void loop() {
int clk = digitalRead(clkPin);
if (clk != lastClk) {
if (digitalRead(dtPin) != clk) {
brightness = min(brightness + 5, 255);
} else {
brightness = max(brightness - 5, 0);
}
analogWrite(pwmPin, brightness);
Serial.print("Яркость: ");
Serial.println(brightness);
}
lastClk = clk;
}
Шаг изменения яркости за один щелчок энкодера (`5`) можно увеличить для более резкой регулировки или уменьшить для плавной подстройки.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 167 ₽ 150 ₽ (экономия 17 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.