Taula de continguts:

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

Vídeo: Controlador de tira LED Arduino RGB: 4 passos

Vídeo: Controlador de tira LED Arduino RGB: 4 passos
Vídeo: Controller LED RGB | RF Controller RGB LEDs | LED RGB Without Arduino | RF 2024, Desembre
Anonim
Controlador de tira LED Arduino RGB
Controlador de tira LED Arduino RGB

Sovint, quan la gent vol controlar la seva tira LED RGB amb un Arduino, s’utilitzen tres potenciòmetres per barrejar els colors vermell, verd i blau. Això funciona i pot estar perfectament adaptat a les vostres necessitats, però volia fer alguna cosa més intuïtiva, com una roda de colors.

Sembla que aquest projecte és una aplicació perfecta per a un codificador rotatiu. Es tracta d’un dispositiu que converteix el moviment del seu eix en una sortida digital. Quan es gira l’eix, el codificador envia un senyal (pols) que pot mesurar un Arduino. Per obtenir més informació sobre els codificadors rotatius, podeu veure aquest vídeo que ho explica amb més profunditat.

En aquest instructiu us mostraré com fer un controlador de tires LED Arduino RGB mitjançant un codificador rotatiu. Aquest instructable cobreix la construcció del circuit sobre una taula de treball. No obstant això, podeu produir el vostre propi PCB per crear un escut Arduino.

Pas 1: parts

Parts
Parts
Parts
Parts

Per al controlador de tires LED RGB, necessitareu els materials següents:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, qualsevol MOSFET de nivell lògic de canal N ho farà sempre que estigui assignat a un mínim de 12V i el corrent que consumeixi la vostra tira LED.
  • 1x codificador rotatiu
  • 1x 12V 2A font d'alimentació, el corrent que la font d'alimentació ha de subministrar pot dependre de la longitud de la tira LED utilitzada.
  • 16x cables de pont masculí a masculí
  • 1x Taula de pa sense soldadura, qualsevol tauleta de pa funcionarà sempre que sigui prou gran.

Pas 2: Circuit

Circuit
Circuit
Circuit
Circuit

Connecteu l'Arduino al carril de 12V i GND de la placa. A continuació, connecteu les altres parts de la següent manera:

Codificador rotatiu

Pin A - D4

Pin B - D3

GND - GND

MOSFET Vermell

Porta - GND

Desguàs: tira LED de filferro vermell

Font - D11

MOSFET GreenGate - GND

Desguàs: tira LED de filferro verd

Font - D9

MOSFET BlueGate - GND

Desguàs: tira LED de filferro blau

Font - D6

Pas 3: Codi

// Pins Arduino PWM

int redPin = 11; int greenPin = 6; int BluePin = 9; // Pins del codificador Arduino int encoderPinA = 3; int encoderPinB = 4; // Variables de color int colorVal; int redVal; int greenVal; int blueVal; // Variables de codificador int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // Altres comptadors int; void setup () {pinMode (codificadorPinA, INPUT_PULLUP); pinMode (codificadorPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (comptador); analogWrite (redPin, redVal); analogWrite (greenPin, greenVal); analogWrite (bluePin, blueVal); } int readEncoder () {encoderPinACurrent = digitalRead (encoderPinA); if ((encoderPinALast == BAIX) && (encoderPinACurrent == HIGH)) {if (digitalRead (encoderPinB) == BAIX) {encoderPos = encoderPos - 1; } else {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; comptador = codificadorPos * 8; if (comptador 1535) {comptador = 0; } comptador de devolucions; } int encoder2rgb (int counterVal) {// De vermell a groc si (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blauVal = 0; } // Groc a verd, si (contraVal <= 511) {colorVal = contraVal - 256; redVal = 255 - colorVal; greenVal = 255; blauVal = 0; } // Verd a cian més if (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blauVal = colorVal; } // Cian a blau else if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blauVal = 255; } // Blau a magenta més if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blauVal = 255; } // Magenta a vermell else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } tornar redVal, greenVal, blueVal; }

Recomanat: