Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
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
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
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; }