Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Arduino RGB-микшер цветов: Простой проект для начинающих

Компоненты и материалы

Компонент Кол-во Примечание
Arduino UNO 1 Любая совместимая плата
RGB-светодиод (4 пина, общий катод) 1 Красный, зелёный, синий в одном корпусе
Потенциометр 10 кОм (вращающийся) 3 По одному на канал R, G, B
Таковая кнопка 12 мм 1 Вкл/выкл микшера
Резистор 10 кОм 1 Pull-up для кнопки
Резистор 220 Ом 3 Ограничение тока для каждого вывода RGB
Макетная плата + перемычки 1 Для сборки без пайки

Софт

О проекте

Интерактивный микшер цвета для новичков. Три потенциометра задают яркость красного, зелёного и синего каналов RGB-светодиода. Кнопка включает/выключает весь прибор. Значения RGB выводятся в Serial Monitor — можно запомнить понравившийся цвет для веб-дизайна, арт-проектов или умного освещения.

Схема подключения

Важно: Резисторы 220 Ом на выходах LED обязательны — без них светодиод сгорит. Pull-up на кнопке нужен для стабильного чтения (иначе «плавающий» вход).

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

Полный скетч

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);
  }
}

Идеи для расширения

Полезные ссылки

Производственный процесс

  1. Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
  2. Настольная RGB-лампа с управлением жестами – Интерактивное беспроводное освещение
  3. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  4. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  5. DIY Arduino Radionics EMR Treatment Device — радионическое устройство
  6. Наружные RGB-прожекторы с DMX-управлением: бюджетное DIY-решение на Arduino
  7. Сборка RGB-микшера цветов на Arduino — пошаговое руководство
  8. Встречайте Новый год с динамическими музыкальными LED-светами
  9. DIY LED-рулетка — собираем одноигровой аркадный автомат на Arduino Nano
  10. Умная автоматизированная парковка на Arduino: контроль мест и шлагбаум