Tabla de contenido:

Controlador de tira de LED Arduino RGB: 4 pasos
Controlador de tira de LED Arduino RGB: 4 pasos

Video: Controlador de tira de LED Arduino RGB: 4 pasos

Video: Controlador de tira de LED Arduino RGB: 4 pasos
Video: Control de Tiras de LED RGB con Arduino - PWM - Teoria y Practica 2024, Noviembre
Anonim
Controlador de tira de LED Arduino RGB
Controlador de tira de LED Arduino RGB

A menudo, cuando la gente quiere controlar su tira de LED RGB con un Arduino, se utilizan tres potenciómetros para mezclar los colores rojo, verde y azul. Esto funciona y podría adaptarse perfectamente a sus necesidades, pero quería hacer algo más intuitivo, algo así como una rueda de colores.

Este proyecto parece ser una aplicación perfecta para un codificador rotatorio. Este es un dispositivo que convierte el movimiento de su eje en una salida digital. Cuando se gira el eje, el codificador envía una señal (pulso) que se puede medir con un Arduino. Para obtener más información sobre los codificadores rotativos, puede ver este video que lo explica con más profundidad.

En este Instructable, le mostraré cómo hacer un controlador de tira de LED Arduino RGB mediante el uso de un codificador rotatorio. Este Instructable cubre la construcción del circuito en una placa de pruebas. ¡Sin embargo, puede producir su propia PCB para crear un escudo Arduino!

Paso 1: Partes

Partes
Partes
Partes
Partes

Para el controlador de tira de LED RGB, necesitará los siguientes materiales:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, cualquier MOSFET de nivel lógico de canal N funcionará siempre que tenga un mínimo de 12V y la corriente que consume su tira de LED.
  • 1x codificador rotatorio
  • Fuente de alimentación 1x 12V 2A, la corriente que debe entregar la fuente de alimentación puede depender de la longitud de la tira de LED utilizada.
  • 16 cables de puente macho a macho
  • 1x tablero sin soldadura, cualquier tablero servirá siempre que sea lo suficientemente grande.

Paso 2: circuito

Circuito
Circuito
Circuito
Circuito

Conecte el Arduino al riel de 12V y GND de la placa de pruebas. Luego conecte las otras partes de la siguiente manera:

codificador rotatorio

Pin A - D4

Pin B - D3

GND - GND

MOSFET Rojo

Puerta - GND

Drenaje - Tira de LED cable rojo

Fuente - D11

MOSFET GreenGate - GND

Drenaje - Tira de LED con cable verde

Fuente - D9

MOSFET BlueGate - GND

Drenaje - Tira de LED cable azul

Fuente - D6

Paso 3: Código

// Pines Arduino PWM

int redPin = 11; int greenPin = 6; int bluePin = 9; // Pines del codificador Arduino int encoderPinA = 3; int encoderPinB = 4; // Variables de color int colorVal; int redVal; int greenVal; int blueVal; // Variables del codificador int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // Otro contador int; configuración vacía () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } bucle vacío () {readEncoder (); encoder2rgb (contador); 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; contador = encoderPos * 8; si (contador 1535) {contador = 0; } contador de devoluciones; } int encoder2rgb (int counterVal) {// Rojo a amarillo if (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // Amarillo a verde else if (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Verde a cian else if (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Cian a azul else if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Azul a magenta else if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Magenta a rojo else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } return redVal, greenVal, blueVal; }

Recomendado: