Índice:

Controlador de faixa LED Arduino RGB: 4 etapas
Controlador de faixa LED Arduino RGB: 4 etapas

Vídeo: Controlador de faixa LED Arduino RGB: 4 etapas

Vídeo: Controlador de faixa LED Arduino RGB: 4 etapas
Vídeo: Curso de Arduino #08 - Led RGB, Módulo Led RGB 2024, Novembro
Anonim
Controlador de faixa LED Arduino RGB
Controlador de faixa LED Arduino RGB

Freqüentemente, quando as pessoas desejam controlar sua faixa de LED RGB com um Arduino, três potenciômetros são usados para misturar as cores vermelha, verde e azul. Isso funciona e pode ser perfeitamente adequado às suas necessidades, mas eu queria fazer algo mais intuitivo, algo como uma roda de cores.

Este projeto parece ser uma aplicação perfeita para um codificador rotativo. Este é um dispositivo que converte o movimento de seu eixo em uma saída digital. Quando o eixo é girado, o codificador envia um sinal (pulso) que pode ser medido por um Arduino. Para obter mais informações sobre codificadores rotativos, você pode assistir a este vídeo que explica isso com mais detalhes.

Neste Instructable, mostrarei como fazer um controlador de faixa de LED Arduino RGB usando um codificador rotativo. Este Instructable cobre a construção do circuito em uma placa de ensaio. Você pode, entretanto, produzir seu próprio PCB para criar um escudo Arduino!

Etapa 1: Peças

Peças
Peças
Peças
Peças

Para o controlador de faixa de LED RGB, você precisará dos seguintes materiais:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, qualquer MOSFET de nível lógico de canal N servirá, contanto que seja classificado em um mínimo de 12 V e a corrente que sua faixa de LED consome.
  • 1x codificador rotativo
  • Fonte de alimentação 1x 12V 2A, a corrente que a fonte de alimentação deve fornecer pode depender do comprimento da faixa de LED usada.
  • 16x fios de jumper macho para macho
  • 1 placa de ensaio sem solda, qualquer placa de ensaio servirá, desde que seja suficientemente grande.

Etapa 2: Circuito

O circuito
O circuito
O circuito
O circuito

Conecte o Arduino ao trilho 12V e GND da placa de ensaio. Em seguida, conecte as outras partes da seguinte maneira:

Codificador rotativo

Pino A - D4

Pino B - D3

GND - GND

MOSFET Vermelho

Portão - GND

Dreno - tira de LED fio vermelho

Fonte - D11

MOSFET GreenGate - GND

Dreno - tira de LED fio verde

Fonte - D9

MOSFET BlueGate - GND

Dreno - fio LED tira azul

Fonte - D6

Etapa 3: Código

// Pinos PWM do Arduino

redPin int = 11; int greenPin = 6; int bluePin = 9; // Pinos do codificador do Arduino int encoderPinA = 3; int encoderPinB = 4; // Variáveis de cor int colorVal; int redVal; int greenVal; int blueVal; // Variáveis do codificador int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // Outro contador interno; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {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; if (contador 1535) {contador = 0; } contador de retorno; } int encoder2rgb (int counterVal) {// Vermelho para amarelo if (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // Amarelo para verde else if (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Verde para ciano else if (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Ciano para azul else if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Azul para magenta else if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Magenta para vermelho else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } return redVal, greenVal, blueVal; }

Recomendado: