Сборка RGB-микшера цветов на Arduino — пошаговое руководство
Компоненты и материалы
| Arduino UNO | × | 1 |
| Потенциометр (3 шт.) | × | 3 |
| Плата для макетирования (Breadboard) | × | 1 |
| RGB-светодиод (или RGB-модуль) | × | 1 |
| Резистор 330 Ом (3 шт.) | × | 3 |
| Перемыжки Male-Male (~15 шт.) | × | 1 |
Программное обеспечение
- Arduino IDE
О проекте
Arduino Color Mixer
Это руководство достаточно простое и требует базовых знаний Arduino и электроники. Если вы не знакомы с Arduino, я дам ссылки для помощи.
Мы создадим устройство, генерирующее все возможные цвета простым вращением ручек. Это поможет понять RGB-цветовую модель и принцип работы современных дисплеев.
Также мы освоим аналоговые входы/выходы Arduino (I/O) — чтение и запись аналоговых напряжений на пинах.
Компоненты (подробно)
- Arduino (используется Uno)
- Breadboard
- Перемыжки Male-Male (~15 шт.)
- 3 потенциометра (используются 5 кОм)
- 3 резистора 330 Ом (оранжево-оранжево-коричневый)
- RGB-светодиод (обычный или модуль)
- ПК с установленной Arduino IDE
Поехали!
Идея микшера: Arduino выдаёт на пинах RGB-светодиода напряжение, пропорциональное входному напряжению от потенциометров на аналоговых входах.
Подключение потенциометров
Потенциометр работает как делитель напряжения, где Vout — пин Arduino.
Суть: он преобразует регулируемую часть напряжения (меняется вращением) в сигнал на аналоговый вход Arduino (Vout).
Подключите внешние контакты потенциометра к 5V и GND (порядок не важен), а средний — к аналоговому входу. Питание 5V и GND берутся с Arduino.
Я использую оранжевый провод для 5V (вместо красного), чтобы легче отличать линии питания и сигналы.
Повторите для 3-х потенциометров — по одному на каждый цвет. Для порядка подключу: Красный → A0, Зелёный → A1, Синий → A2.
Подключение RGB-светодиода
RGB-светодиод содержит 3 кристалла (R, G, B) в одном корпусе. Их свет смешивается на сетчатке, создавая восприятие единого цвета.
PWM на каждом пине даёт 256 значений. Итого: 256 × 256 × 256 = 16 777 216 цветов (почти 17 млн).
Подключение аналогично обычному светодиоду, но повторяется 3 раза. Каждый анод через резистор 330 Ом к PWM-пину, общий катод — к GND.
Не забудьте резисторы 330 Ом! Я сжёг красный кристалл, забыв резистор — току достаточно для сгорания за мгновения.
Теперь схема готова. Код очень прост и прямолинеен.
Программирование
Код выполняет простые действия последовательно.
В setup():
- Настроить 3 аналоговых входа как INPUT
- Настроить 3 PWM-выхода как OUTPUT
В loop():
- Считать значение потенциометра через
analogRead() - Преобразовать диапазон 0–1023 в 0–255 функцией
map() - Вывести PWM-значение на пин через
analogWrite()
Полный код приведён ниже.
Код (RGBLedPot.ino)
/* Controls RGB LED using potentiometers for each color
Name: RGBLedPot.ino
Created: 17/2/16 9:47:03 AM
Author: Ahmed Hamdy
GNUPL 3.0+ */
int inRGB[] = { A0, A1, A2 }; // Аналоговые входы для потенциометров
int outRGB[] = { 9, 10, 11 }; // PWM-выходы для RGB-светодиода
int tempValue = 0;
const int inMinVal = 0, inMaxVal = 1023;
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(inRGB[i], INPUT);
pinMode(outRGB[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 3; i++) {
tempValue = analogRead(inRGB[i]);
tempValue = map(tempValue, inMinVal, inMaxVal, 0, 255);
analogWrite(outRGB[i], tempValue);
}
}
Теперь у вас есть генератор 17 млн цветов! Поздравляю!
Схемы
Схема подключения прилагается.
Производственный процесс
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Arduino RGB-микшер цветов: Простой проект для начинающих
- NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
- Своё рулевое управление (джойстик) для игр на Arduino
- FM-радиоприемник на Arduino и модуле TEA5767
- Arduino 101: Пedometer с датчиком DHT11 и LCD-дисплеем