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

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


🌈 Проект: цветовой индикатор уровня на RGB-светодиоде KY-016, управляемый потенциометром

RGB-светодиод KY-016, уже встречавшийся в других проектах на сайте как вспомогательный индикатор, здесь становится главным героем: потенциометр плавно двигает цвет от зелёного через жёлтый к красному, как цветовая шкала уровня — похожая на индикаторы заряда или громкости во многих бытовых приборах.

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

Потенциометр подключён как обычный делитель напряжения, и его положение считывается через `analogRead()` как число от 0 до 1023. Вместо того чтобы напрямую управлять яркостью одного канала, как в большинстве других проектов с RGB-светодиодами на сайте, здесь это число используется для плавного смешивания ДВУХ каналов одновременно: в начале диапазона горит только зелёный канал, затем к нему постепенно добавляется красный (давая жёлтый как их смесь), и к концу диапазона зелёный канал гаснет, оставляя чистый красный.

Это классический приём отображения "уровня" цветом (зелёный = хорошо, жёлтый = внимание, красный = критично), который используется гораздо шире, чем просто для потенциометров — тот же принцип подойдёт для отображения любого измеренного уровня (заряда батареи, температуры, расстояния) из других проектов на сайте, если заменить `analogRead()` потенциометра на реальные показания соответствующего датчика.

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

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

  1. Потенциометр: средний вывод → A0, крайние выводы → 5V и GND.
  2. RGB-светодиод KY-016: R → D9, G → D10, каждый через свой токоограничивающий резистор (обычно 220-330 Ом), если на самой плате модуля их нет.
  3. Общий вывод светодиода подключите к GND или 5V в зависимости от типа вашего экземпляра (общий катод или общий анод) — при общем аноде логику ШИМ в коде нужно будет инвертировать.

Скетч

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

const int POT_PIN = A0;
const int RED_PIN = 9;
const int GREEN_PIN = 10;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int level = analogRead(POT_PIN); // 0-1023

  int redValue;
  int greenValue;

  if (level < 512) {
    // первая половина диапазона: зелёный горит на максимум, красный плавно растёт от 0
    greenValue = 255;
    redValue = map(level, 0, 511, 0, 255);
  } else {
    // вторая половина: красный на максимуме, зелёный плавно гаснет до 0
    redValue = 255;
    greenValue = map(level, 512, 1023, 255, 0);
  }

  analogWrite(RED_PIN, redValue);
  analogWrite(GREEN_PIN, greenValue);

  delay(50);
}

Дополнительных библиотек не требуется — только встроенные `analogRead()`, `map()` и `analogWrite()`. Если цвета выглядят "вывернутыми" (красный горит, где должен быть зелёный, и наоборот) — у вас, скорее всего, светодиод с общим анодом; замените каждое значение ШИМ на `255 - значение`.

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

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

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

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

← 🔄 включение и выключение реле направлением в…🔊 звуковая сигнализация отклонения по оси Y … →

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

Все 2 товара сразу в корзину: 120 ₽ 108 ₽ (экономия 12 ₽)

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

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

Корзина


Поиск



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