
Интернет-магазин «Неглупый Дом»
KA2284 уже сам зажигает светодиодную шкалу по звуку, а параллельно отдаёт аналоговый уровень сигнала — его можно считать и на Arduino, чтобы управлять RGB-светодиодом.
Микросхема KA2284 изначально предназначена для светодиодных индикаторов уровня (как в старых магнитофонах и усилителях) — она выпрямляет и усредняет переменный звуковой сигнал, превращая его в постоянное напряжение, пропорциональное громкости звука в данный момент. Помимо того, что модуль сам зажигает свою светодиодную шкалу, он дополнительно выводит это напряжение на отдельный аналоговый выход, который можно подключить к Arduino и считывать функцией `analogRead()` как число от 0 до 1023.
Дальше Arduino просто переводит это число в яркость трёх каналов RGB-светодиода через `map()` и `analogWrite()` — громче звук, выше значение с датчика, ярче и «теплее» свечение. Используя разные формулы для красного, зелёного и синего каналов (в примере — прямую, инверсную и половинную зависимость), можно добиться эффекта смены цвета в такт музыке, а не просто изменения яркости одного оттенка.
`analogWrite()` работает через ШИМ (широтно-импульсную модуляцию) — светодиод физически мигает очень быстро (сотни раз в секунду), а глаз воспринимает это как плавное изменение яркости за счёт инерции зрения.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int levelPin = A0;
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
int level = analogRead(levelPin); // 0-1023, пропорционально громкости звука
int brightness = map(level, 0, 1023, 0, 255); // переводим в диапазон ШИМ 0-255
analogWrite(redPin, brightness); // красный растёт вместе с громкостью
analogWrite(greenPin, 255 - brightness); // зелёный — наоборот, убывает
analogWrite(bluePin, brightness / 2); // синий растёт медленнее остальных
delay(20); // небольшая задержка для плавности, не делайте слишком большой — будет заметное мигание
}
Чем громче звук — тем ярче красный канал и тусклее зелёный, синий держится примерно посередине. Пропорции легко поменять под свой вкус, подставив другие формулы в `analogWrite()`.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 159 ₽ 143 ₽ (экономия 16 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.