Sommario:

Controller per strisce LED RGB Arduino: 4 passaggi
Controller per strisce LED RGB Arduino: 4 passaggi

Video: Controller per strisce LED RGB Arduino: 4 passaggi

Video: Controller per strisce LED RGB Arduino: 4 passaggi
Video: Crea i tuoi effetti luminosi con una striscia LED RGB comandata a distanza - controller for RGB LEDs 2024, Luglio
Anonim
Controller per strisce LED RGB Arduino
Controller per strisce LED RGB Arduino

Spesso quando le persone vogliono controllare la loro striscia LED RGB con un Arduino, vengono utilizzati tre potenziometri per mescolare i colori rosso, verde e blu. Funziona e potrebbe andare benissimo per le tue esigenze, ma volevo creare qualcosa di più intuitivo, qualcosa come una ruota dei colori.

Questo progetto sembra essere un'applicazione perfetta per un encoder rotativo. Questo è un dispositivo che converte il movimento del suo albero in un'uscita digitale. Quando l'albero viene ruotato, l'encoder invia un segnale (impulso) che può essere misurato da un Arduino. Per ulteriori informazioni sugli encoder rotativi, puoi guardare questo video che lo spiega in modo più approfondito.

In questo Instructable ti mostrerò come realizzare un controller per strisce LED RGB Arduino utilizzando un encoder rotativo. Questo Instructable copre la costruzione del circuito su una breadboard. Potresti comunque produrre il tuo PCB per creare uno shield Arduino!

Passaggio 1: parti

Parti
Parti
Parti
Parti

Per il controller della striscia LED RGB avrai bisogno dei seguenti materiali:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, qualsiasi MOSFET a livello logico a canale N funzionerà purché sia valutato a un minimo di 12 V e la corrente consumata dalla striscia LED.
  • 1x codificatore rotante
  • 1x alimentatore 12V 2A, la corrente che l'alimentatore deve erogare può dipendere dalla lunghezza della striscia LED utilizzata.
  • 16x cavi jumper maschio-maschio
  • 1x breadboard senza saldatura, qualsiasi breadboard andrà bene purché sia sufficientemente grande.

Passaggio 2: circuito

Circuito
Circuito
Circuito
Circuito

Collega Arduino al binario 12V e GND della breadboard. Quindi collegare le altre parti come segue:

Encoder rotativo

Pin A - D4

Perno B - D3

GND - GND

MOSFET Rosso

Cancello - GND

Drain - filo rosso striscia LED

Sorgente - D11

MOSFET GreenGate - GND

Drain - filo verde striscia LED

Fonte - D9

MOSFET BlueGate - GND

Drain - filo blu striscia LED

Sorgente - RE6

Passaggio 3: codice

// pin Arduino PWM

int pin rosso = 11; int pin verde = 6; int bluePin = 9; // Pin encoder Arduino int encoderPinA = 3; int encoderPinB = 4; // Variabili colore int colorVal; int redVal; int greenVal; int bluVal; // Variabili dell'encoder int encoderPos; int encoderPinACCurrent; int encoderPinALast = ALTO; // Altro contatore int; void setup(){ pinMode(encoderPinA, INPUT_PULLUP); pinMode(codificatorePinB, INPUT_PULLUP); } void loop(){ readEncoder(); encoder2rgb(contatore); 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; contatore = encoderPos*8; if (contatore 1535){ contatore = 0; } contatore di ritorno; } int encoder2rgb(int counterVal){ // Da rosso a giallo if (counterVal <= 255){ colorVal = counterVal; redVal = 255; greenVal = colorVal; bluVal = 0; } // Da giallo a verde else if (counterVal <= 511){ colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; bluVal = 0; } // Da verde a ciano else if (counterVal <= 767){ colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Da ciano a blu else if (counterVal <= 1023){ colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; bluVal = 255; } // Da blu a magenta else if (counterVal <= 1279){ colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; bluVal = 255; } // Da magenta a rosso else{ colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } return redVal, greenVal, blueVal; }

Consigliato: