Arduino RGB-микшер цветов: Простой проект для начинающих
Компоненты и материалы
| Компонент | Кол-во | Примечание |
|---|---|---|
| Arduino UNO | 1 | Любая совместимая плата |
| RGB-светодиод (4 пина, общий катод) | 1 | Красный, зелёный, синий в одном корпусе |
| Потенциометр 10 кОм (вращающийся) | 3 | По одному на канал R, G, B |
| Таковая кнопка 12 мм | 1 | Вкл/выкл микшера |
| Резистор 10 кОм | 1 | Pull-up для кнопки |
| Резистор 220 Ом | 3 | Ограничение тока для каждого вывода RGB |
| Макетная плата + перемычки | 1 | Для сборки без пайки |
Софт
- Arduino IDE
О проекте
Интерактивный микшер цвета для новичков. Три потенциометра задают яркость красного, зелёного и синего каналов RGB-светодиода. Кнопка включает/выключает весь прибор. Значения RGB выводятся в Serial Monitor — можно запомнить понравившийся цвет для веб-дизайна, арт-проектов или умного освещения.
Схема подключения
- RGB LED:
- R (анод) → резистор 220 Ом → D11 (PWM)
- G → 220 Ом → D10 (PWM)
- B → 220 Ом → D9 (PWM)
- Общий катод → GND
- Потенциометры (3 шт.):
- Края → 5V и GND
- Средний вывод: R → A0, G → A1, B → A2
- Кнопка:
- Один контакт → D7
- Второй → GND
- Pull-up 10 кОм: D7 → 5V (или используйте
INPUT_PULLUPи кнопку на GND)
Важно: Резисторы 220 Ом на выходах LED обязательны — без них светодиод сгорит. Pull-up на кнопке нужен для стабильного чтения (иначе «плавающий» вход).
Как работает код
analogReadдаёт 0–1023,analogWrite(PWM) принимает 0–255 → делим на 4.- Кнопка переключает флаг
state(0/1) по фронту (антидребезг 10 мс). - Если
state==1— пишем PWM по каналам, печатаемRGB(r,g,b)в Serial. - Если
state==0— гасим все каналы.
Полный скетч
const int RED_PIN = 11;
const int GREEN_PIN = 10;
const int BLUE_PIN = 9;
const int RED_POT = A0;
const int GREEN_POT = A1;
const int BLUE_POT = A2;
const int BUTTON_PIN = 7;
int redVal = 0, greenVal = 0, blueVal = 0;
int state = 0; // 0 = выкл, 1 = вкл
int btnVal = 0, oldBtnVal = 0;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP); // используем внутренний pull-up
Serial.begin(9600);
}
void loop() {
// Чтение кнопки с антидребезгом
btnVal = digitalRead(BUTTON_PIN);
if (btnVal == LOW && oldBtnVal == HIGH) { // нажатие (LOW из-за pull-up)
state = 1 - state;
delay(10);
}
oldBtnVal = btnVal;
// Чтение потенциометров
redVal = analogRead(RED_POT);
greenVal = analogRead(GREEN_POT);
blueVal = analogRead(BLUE_POT);
if (state == 1) {
analogWrite(RED_PIN, redVal / 4);
analogWrite(GREEN_PIN, greenVal / 4);
analogWrite(BLUE_PIN, blueVal / 4);
Serial.print("RGB(");
Serial.print(redVal / 4); Serial.print(",");
Serial.print(greenVal / 4); Serial.print(",");
Serial.print(blueVal / 4);
Serial.println(")");
delay(50);
} else {
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 0);
delay(50);
}
}
Идеи для расширения
- Добавить кнопки-пресеты: «Красный», «Фиолетовый», «Тёплый белый» и т.д. (задать константы RGB).
- Заменить потенциометры на энкодеры или сенсорные ползунки.
- Вывод цвета на OLED-дисплей (SSD1306) в HEX/RGB/HSV.
- Bluetooth-модуль (HC-05/HC-06) + приложение на телефоне для удалённого управления.
- Использовать адресуемую ленту WS2812B вместо одного RGB-LED — сделать микшер для всей комнаты.
Полезные ссылки
- Pull-up/pull-down резисторы: Arduino Playground
- PWM на Arduino: Официальная справка
Производственный процесс
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Настольная RGB-лампа с управлением жестами – Интерактивное беспроводное освещение
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino
- DIY Arduino Radionics EMR Treatment Device — радионическое устройство
- Наружные RGB-прожекторы с DMX-управлением: бюджетное DIY-решение на Arduino
- Сборка RGB-микшера цветов на Arduino — пошаговое руководство
- Встречайте Новый год с динамическими музыкальными LED-светами
- DIY LED-рулетка — собираем одноигровой аркадный автомат на Arduino Nano
- Умная автоматизированная парковка на Arduino: контроль мест и шлагбаум