Talaan ng mga Nilalaman:

Arduino RGB LED Strip Controller: 4 na Hakbang
Arduino RGB LED Strip Controller: 4 na Hakbang

Video: Arduino RGB LED Strip Controller: 4 na Hakbang

Video: Arduino RGB LED Strip Controller: 4 na Hakbang
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Hulyo
Anonim
Arduino RGB LED Strip Controller
Arduino RGB LED Strip Controller

Kadalasan kapag nais ng mga tao na kontrolin ang kanilang RGB LED strip gamit ang isang Arduino, ginagamit ang tatlong potentiometers upang makihalubilo sa pula, berde at asul na mga kulay. Gumagana ito at maaaring maging perpektong pagmultahin para sa iyong mga pangangailangan, ngunit nais kong gumawa ng isang bagay na mas madaling maunawaan, isang bagay tulad ng isang kulay ng gulong.

Ang proyektong ito ay tila isang perpektong application para sa isang rotary encoder. Ito ay isang aparato na nagko-convert ang galaw ng baras nito sa isang digital na output. Kapag ang baras ay nakabukas, ang encoder ay nagpapadala ng isang senyas (pulso) na maaaring sukatin ng isang Arduino. Para sa higit pa sa mga rotary encoder, maaari mong panoorin ang video na ito na nagpapaliwanag nito nang mas malalim.

Sa Instructable na ito ipapakita ko sa iyo kung paano gumawa ng isang Arduino RGB LED strip controller sa pamamagitan ng paggamit ng isang rotary encoder. Saklaw ng Instructable na ito ang pagtatayo ng circuit sa isang breadboard. Maaari ka ring gumawa ng iyong sariling PCB upang lumikha ng isang Arduino kalasag!

Hakbang 1: Mga Bahagi

Mga Bahagi
Mga Bahagi
Mga Bahagi
Mga Bahagi

Para sa RGB LED strip controller kakailanganin mo ang mga sumusunod na materyales:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, anumang N-channel na antas ng lohika na MOSFET ay gagawin hangga't ito ay na-rate sa isang minimum na 12V at ang kasalukuyang naubos ang iyong LED strip.
  • 1x Rotary encoder
  • 1x 12V 2A power supply, ang kasalukuyang paghahatid ng kuryente ay maaaring maihatid ay maaaring depende sa haba ng ginamit na LED strip.
  • 16x Lalake sa mga lalaking jumper wires
  • 1x Solderless breadboard, anumang tinapay ang gagawin hangga't ito ay sapat na malaki.

Hakbang 2: Circuit

Circuit
Circuit
Circuit
Circuit

Ikonekta ang Arduino sa 12V at GND rail ng breadboard. Pagkatapos ikonekta ang iba pang mga bahagi tulad ng sumusunod:

Rotary encoder

Pin A - D4

Pin B - D3

GND - GND

MOSFET Pula

Gate - GND

Patuyuin - LED strip red wire

Pinagmulan - D11

MOSFET GreenGate - GND

Patuyuin - LED strip green wire

Pinagmulan - D9

MOSFET BlueGate - GND

Patuyuin - LED strip blue wire

Pinagmulan - D6

Hakbang 3: Code

// Arduino PWM pins

int redPin = 11; int greenPin = 6; int bluePin = 9; // Arduino encoder pins int encoderPinA = 3; int encoderPinB = 4; // Mga variable ng kulay sa int colorVal; int redVal; int greenVal; int blueVal; // variable ng Encoder int encoderPos; int encoderPinACurrent; int encoderPinALast = MATAAS; // Iba pang int counter; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (counter); analogWrite (redPin, redVal); analogWrite (greenPin, greenVal); analogWrite (bluePin, blueVal); } int readEncoder () {encoderPinACurrent = digitalRead (encoderPinA); kung ((encoderPinALast == LOW) && (encoderPinACurrent == HIGH)) {if (digitalRead (encoderPinB) == LOW) {encoderPos = encoderPos - 1; } iba pa {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; counter = encoderPos * 8; kung (counter 1535) {counter = 0; } bumalik counter; } int encoder2rgb (int counterVal) {// Pula hanggang dilaw kung (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // Dilaw hanggang berde kung (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Green to cyan else kung (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Cyan sa asul pa kung (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Blue to magenta else kung (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Magenta sa pula pa {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } ibalik ang redVal, greenVal, blueVal; }

Inirerekumendang: