Съдържание:

Arduino RGB LED лентов контролер: 4 стъпки
Arduino RGB LED лентов контролер: 4 стъпки

Видео: Arduino RGB LED лентов контролер: 4 стъпки

Видео: Arduino RGB LED лентов контролер: 4 стъпки
Видео: Самый удобный RGB контроллер на ATtiny! 2024, Юли
Anonim
Arduino RGB LED лентов контролер
Arduino RGB LED лентов контролер

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

Този проект изглежда перфектно приложение за ротационен енкодер. Това е устройство, което преобразува движението на вала си в цифров изход. Когато валът се завърти, енкодерът изпраща сигнал (импулс), който може да бъде измерен от Arduino. За повече информация относно въртящите се енкодери можете да гледате това видео, което го обяснява по-задълбочено.

В тази инструкция ще ви покажа как да направите Arduino RGB LED лентов контролер с помощта на въртящ се енкодер. Тази инструкция обхваща изграждането на веригата върху макет. Можете обаче да създадете своя собствена печатна платка, за да създадете щит Arduino!

Стъпка 1: Части

Части
Части
Части
Части

За RGB LED лентовия контролер ще ви трябват следните материали:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, всеки MOSFET с N-канално логическо ниво ще работи, стига да е номинален при минимум 12V и тока, който вашата LED лента консумира.
  • 1x въртящ се енкодер
  • 1x 12V 2A захранване, токът, който трябва да достави захранването, може да зависи от дължината на използваната LED лента.
  • 16x проводници от мъжки към мъжки
  • 1x макет без запояване, всеки макет ще направи, стига да е достатъчно голям.

Стъпка 2: Схема

Верига
Верига
Верига
Верига

Свържете Arduino към 12V и GND шината на платката. След това свържете другите части, както следва:

Ротационен енкодер

Щифт A - D4

Щифт B - D3

GND - GND

MOSFET Червен

Порта - GND

Изтичане - LED лента червен проводник

Източник - D11

MOSFET GreenGate - GND

Изтичане - LED лента зелен проводник

Източник - D9

MOSFET BlueGate - GND

Изтичане - LED лента син проводник

Източник - D6

Стъпка 3: Код

// PWM щифтове на Arduino

int redPin = 11; int greenPin = 6; int bluePin = 9; // Ардуино кодиращи щифтове int encoderPinA = 3; int енкодерPinB = 4; // Цветни променливи int colorVal; int redVal; int greenVal; int blueVal; // Променливи на енкодера int encoderPos; int енкодерPinACurrent; int encoderPinALast = HIGH; // Друг int брояч; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {readEncoder (); енкодер2rgb (брояч); 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; } else {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; брояч = енкодерPos*8; if (брояч 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; }

Препоръчано: