Cuprins:

Controler de bandă LED Arduino RGB: 4 pași
Controler de bandă LED Arduino RGB: 4 pași

Video: Controler de bandă LED Arduino RGB: 4 pași

Video: Controler de bandă LED Arduino RGB: 4 pași
Video: How to control multiple rolls addressable LED strip light? 2024, Noiembrie
Anonim
Controler de bandă LED Arduino RGB
Controler de bandă LED Arduino RGB

Adesea, atunci când oamenii doresc să-și controleze banda LED RGB cu un Arduino, trei potențiometre sunt folosite pentru a amesteca culorile roșu, verde și albastru. Acest lucru funcționează și ar putea fi perfect pentru nevoile dvs., dar am vrut să fac ceva mai intuitiv, ceva de genul unei roți de culoare.

Acest proiect pare a fi o aplicație perfectă pentru un codificator rotativ. Acesta este un dispozitiv care convertește mișcarea arborelui său într-o ieșire digitală. Când arborele este rotit, codificatorul trimite un semnal (impuls) care poate fi măsurat de un Arduino. Pentru mai multe despre codificatoarele rotative, puteți viziona acest videoclip care îl explică mai în profunzime.

În acest Instructable vă voi arăta cum să realizați un controler de bandă LED Arduino RGB folosind un codificator rotativ. Acest instructable acoperă construcția circuitului pe o placă de calcul. Cu toate acestea, ați putea produce propriul PCB pentru a crea un scut Arduino!

Pasul 1: Piese

Părți
Părți
Părți
Părți

Pentru controlerul de benzi LED RGB veți avea nevoie de următoarele materiale:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, orice MOSFET de nivel logic cu canal N va face atâta timp cât este evaluat la minimum 12V și curentul pe care îl consumă banda LED.
  • 1x codificator rotativ
  • 1x sursă de alimentare 12V 2A, curentul pe care trebuie să-l furnizeze sursa de alimentare poate depinde de lungimea benzii LED utilizate.
  • 16x fire de jumper de la tată la tată
  • 1x panou fără sudură, orice panou va funcționa atâta timp cât este suficient de mare.

Pasul 2: Circuit

Circuit
Circuit
Circuit
Circuit

Conectați Arduino la șina de 12V și GND a panoului. Apoi conectați celelalte părți după cum urmează:

Rotativ

Pinul A - D4

Pinul B - D3

GND - GND

MOSFET Roșu

Poarta - GND

Scurgere - bandă LED sârmă roșie

Sursa - D11

MOSFET GreenGate - GND

Scurgere - bandă LED cu fir verde

Sursa - D9

MOSFET BlueGate - GND

Scurgere - bandă LED sârmă albastră

Sursa - D6

Pasul 3: Cod

// Pinii Arduino PWM

int redPin = 11; int greenPin = 6; int BluePin = 9; // Pinii codificatorului Arduino int encoderPinA = 3; int encoderPinB = 4; // Variabile de culoare int colorVal; int redVal; int greenVal; int blueVal; // Variabile codificator int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // Alt contor int; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (contor); 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; contor = encoderPos * 8; if (contor 1535) {contor = 0; } contor retur; } int encoder2rgb (int counterVal) {// Roșu până la galben dacă (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; albastruVal = 0; } // Galben spre verde altceva dacă (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; albastruVal = 0; } // Verde spre cian altceva dacă (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Cyan to blue else if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; albastruVal = 255; } // Albastru până la magenta altceva dacă (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; albastruVal = 255; } // Magenta la roșu else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; albastruVal = 255 - colorVal; } returnează RedVal, greenVal, blueVal; }

Recomandat: