Оглавление:

Контроллер светодиодной ленты Arduino RGB: 4 шага
Контроллер светодиодной ленты Arduino RGB: 4 шага

Видео: Контроллер светодиодной ленты Arduino RGB: 4 шага

Видео: Контроллер светодиодной ленты Arduino RGB: 4 шага
Видео: 💡Делаем RGB контроллер и крутой свет для видео 2024, Июль
Anonim
Контроллер светодиодной ленты Arduino RGB
Контроллер светодиодной ленты Arduino RGB

Часто, когда люди хотят управлять своей светодиодной лентой RGB с помощью Arduino, используются три потенциометра для смешивания красного, зеленого и синего цветов. Это работает и может идеально соответствовать вашим потребностям, но я хотел сделать что-то более интуитивно понятное, что-то вроде цветового круга.

Этот проект кажется идеальным приложением для энкодера. Это устройство, которое преобразует движение своего вала в цифровой выходной сигнал. Когда вал поворачивается, энкодер отправляет сигнал (импульс), который может быть измерен Arduino. Чтобы узнать больше о поворотных энкодерах, вы можете посмотреть это видео, которое объясняет это более подробно.

В этом руководстве я покажу вам, как сделать контроллер светодиодной ленты Arduino RGB с помощью поворотного энкодера. В этом руководстве описывается конструкция схемы на макетной плате. Однако вы можете создать свою собственную печатную плату, чтобы создать щит Arduino!

Шаг 1: Детали

Запчасти
Запчасти
Запчасти
Запчасти

Для контроллера светодиодной ленты RGB вам потребуются следующие материалы:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, любой N-канальный MOSFET логического уровня подойдет, если он рассчитан на минимум 12 В и ток, потребляемый вашей светодиодной лентой.
  • 1x поворотный энкодер
  • Блок питания 1x 12V 2A, сила тока, которую должен обеспечивать блок питания, может зависеть от длины используемой светодиодной ленты.
  • 16x перемычек между мужчинами
  • 1x макетная плата без пайки, подойдет любая макетная плата, если она достаточно велика.

Шаг 2: Схема

Схема
Схема
Схема
Схема

Подключите Arduino к шине 12V и GND на макетной плате. Затем соедините остальные детали следующим образом:

Поворотный энкодер

Контакт A - D4

Штифт B - D3

GND - GND

MOSFET Красный

Ворота - GND

Слив - светодиодная лента красный провод

Источник - D11

МОП-транзистор GreenGate - GND

Слив - светодиодная лента зелёный провод

Источник - D9

МОП-транзистор BlueGate - GND

Слив - светодиодная лента синий провод

Источник - D6

Шаг 3: Код

// Контакты Arduino PWM

int redPin = 11; int greenPin = 6; int bluePin = 9; // Контакты кодировщика Arduino int encoderPinA = 3; int encoderPinB = 4; // Цветовые переменные int colorVal; int redVal; int greenVal; int blueVal; // Переменные кодировщика int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // Другой int counter; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (счетчик); analogWrite (redPin, redVal); analogWrite (greenPin, greenVal); analogWrite (bluePin, blueVal); } int readEncoder () {encoderPinACurrent = digitalRead (encoderPinA); if ((encoderPinALast == LOW) && (encoderPinACurrent == HIGH)) {if (digitalRead (encoderPinB) == LOW) {encoderPos = encoderPos - 1; } еще {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; counter = encoderPos * 8; если (счетчик 1535) {счетчик = 0; } счетчик возврата; } int encoder2rgb (int counterVal) {// От красного к желтому if (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // От желтого к зеленому иначе if (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Зеленый в голубой иначе if (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Голубой в синий иначе if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // От синего к пурпурному иначе if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Пурпурный в красный else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } вернуть redVal, greenVal, blueVal; }

Рекомендуемые: