Table des matières:

Contrôleur de bande LED Arduino RGB : 4 étapes
Contrôleur de bande LED Arduino RGB : 4 étapes

Vidéo: Contrôleur de bande LED Arduino RGB : 4 étapes

Vidéo: Contrôleur de bande LED Arduino RGB : 4 étapes
Vidéo: Home Assistant - подключаем адресную ленту WS2812B через ESP8266 с прошивкой WLED 2024, Juillet
Anonim
Contrôleur de bande LED Arduino RGB
Contrôleur de bande LED Arduino RGB

Souvent, lorsque les gens veulent contrôler leur bande de LED RVB avec un Arduino, trois potentiomètres sont utilisés pour mélanger les couleurs rouge, verte et bleue. Cela fonctionne et pourrait parfaitement répondre à vos besoins, mais je voulais faire quelque chose de plus intuitif, quelque chose comme une roue chromatique.

Ce projet semble être une application parfaite pour un encodeur rotatif. Il s'agit d'un appareil qui convertit le mouvement de son arbre en une sortie numérique. Lorsque l'arbre est tourné, l'encodeur envoie un signal (impulsion) qui peut être mesuré par un Arduino. Pour en savoir plus sur les encodeurs rotatifs, vous pouvez regarder cette vidéo qui l'explique plus en détail.

Dans ce Instructable je vais vous montrer comment faire un contrôleur de bande LED Arduino RGB en utilisant un encodeur rotatif. Ce Instructable couvre la construction du circuit sur une planche à pain. Vous pouvez cependant produire votre propre PCB afin de créer un shield Arduino !

Étape 1: Pièces

les pièces
les pièces
les pièces
les pièces

Pour le contrôleur de bande LED RGB, vous aurez besoin des matériaux suivants:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, n'importe quel MOSFET de niveau logique à canal N fera l'affaire tant qu'il est évalué à un minimum de 12 V et que le courant consommé par votre bande LED.
  • 1x encodeur rotatif
  • 1x alimentation 12V 2A, le courant que l'alimentation doit fournir peut dépendre de la longueur de la bande LED utilisée.
  • 16x cavaliers mâles à mâles
  • 1x planche à pain sans soudure, n'importe quelle planche à pain fera l'affaire tant qu'elle est suffisamment grande.

Étape 2: Circuit

Circuit
Circuit
Circuit
Circuit

Connectez l'Arduino au rail 12V et GND de la maquette. Connectez ensuite les autres pièces comme suit:

codeur rotatif

Broche A - D4

Broche B - D3

TERRE - TERRE

MOSFET Rouge

Porte - GND

Drain - Ruban LED fil rouge

Source - D11

MOSFET GreenGate - GND

Drain - Ruban LED fil vert

Source - D9

MOSFET BlueGate - GND

Drain - Ruban LED fil bleu

Source - D6

Étape 3: Coder

// Broches Arduino PWM

int redPin = 11; int greenPin = 6; int bluePin = 9; // Broches de l'encodeur Arduino int encoderPinA = 3; int encoderPinB = 4; // Variables de couleur int colorVal; int redVal; int greenVal; int blueVal; // Variables d'encodeur int encoderPos; int encoderPinACurrent; int encoderPinALast = HAUT; // Autre compteur int; void setup(){ pinMode(encoderPinA, INPUT_PULLUP); pinMode(encodeurPinB, INPUT_PULLUP); } boucle vide(){ readEncoder(); encoder2rgb(compteur); 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; compteur = encoderPos*8; if (compteur 1535){ compteur = 0; } compteur de retour; } int encoder2rgb(int counterVal){ // Rouge à jaune if (counterVal <= 255){ colorVal = counterVal; RedVal = 255; greenVal = colorVal; blueVal = 0; } // Jaune à vert else if (counterVal <= 511){ colorVal = counterVal - 256; redVal = 255 - colorVal; verteVal = 255; blueVal = 0; } // Vert à cyan else if (counterVal <= 767){ colorVal = counterVal - 512; RedVal = 0; verteVal = 255; blueVal = colorVal; } // Cyan à bleu else if (counterVal <= 1023){ colorVal = counterVal - 768; RedVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Bleu à magenta else if (counterVal <= 1279){ colorVal = counterVal - 1024; redVal = colorVal; verteVal = 0; blueVal = 255; } // Du magenta au rouge else{ colorVal = counterVal - 1280; RedVal = 255; verteVal = 0; blueVal = 255 - colorVal; } renvoie redVal, greenVal, blueVal; }

Conseillé: