Përmbajtje:

Kontrolluesi Rrip LED Arduino RGB: 4 hapa
Kontrolluesi Rrip LED Arduino RGB: 4 hapa

Video: Kontrolluesi Rrip LED Arduino RGB: 4 hapa

Video: Kontrolluesi Rrip LED Arduino RGB: 4 hapa
Video: ESP32 Tutorial 12 - WS2812 RGB Srip 4 Project with SunFounder's ESP32 IoT Learnig kit 2024, Nëntor
Anonim
Kontrollues Rrip LED Arduino RGB
Kontrollues Rrip LED Arduino RGB

Shpesh kur njerëzit duan të kontrollojnë shiritin e tyre LED RGB me një Arduino, tre potenciometra përdoren për të përzier ngjyrat e kuqe, jeshile dhe blu. Kjo funksionon dhe mund të jetë krejtësisht e mirë për nevojat tuaja, por unë doja të bëja diçka më intuitive, diçka si një rrotë me ngjyra.

Ky projekt duket të jetë një aplikim i përsosur për një kodues rrotullues. Kjo është një pajisje që konverton lëvizjen e boshtit të saj në një dalje dixhitale. Kur boshti kthehet, kodifikuesi dërgon një sinjal (puls) i cili mund të matet me një Arduino. Për më shumë mbi kodifikuesit rrotullues, mund ta shikoni këtë video e cila e shpjegon atë më thellë.

Në këtë Instructable unë do t'ju tregoj se si të bëni një kontrollues të shiritit Arduino RGB LED duke përdorur një kodues rrotullues. Ky udhëzues mbulon ndërtimin e qarkut në një dërrasë buke. Sidoqoftë, ju mund të prodhoni PCB tuaj në mënyrë që të krijoni një mburojë Arduino!

Hapi 1: Pjesët

Pjesët
Pjesët
Pjesët
Pjesët

Për kontrolluesin e shiritit LED RGB do t'ju nevojiten materialet e mëposhtme:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, çdo nivel logjik N-MOSFET do të bëjë për aq kohë sa vlerësohet në minimum 12V dhe rryma që konsumon rripi juaj LED.
  • 1x kodues rrotullues
  • Furnizimi me energji 1x 12V 2A, rryma që duhet të japë furnizimi me energji elektrike mund të varet nga gjatësia e shiritit LED të përdorur.
  • 16x Tela bluzë meshkuj në meshkuj
  • 1x bukë pa salduese, çdo dërrasë do të bëjë për aq kohë sa është mjaft e madhe.

Hapi 2: Qarku

Qarku
Qarku
Qarku
Qarku

Lidheni Arduino me shinën 12V dhe GND të dërrasës së bukës. Pastaj lidhni pjesët e tjera si më poshtë:

Kodifikues rrotullues

Pin A - D4

Pin B - D3

GND - GND

MOSFET E Kuqe

Porta - GND

Drain - Teli i kuq me shirit LED

Burimi - D11

MOSFET GreenGate - GND

Drain - Teli i gjelbër me shirit LED

Burimi - D9

MOSFET BlueGate - GND

Drain - Teli blu me shirit LED

Burimi - D6

Hapi 3: Kodi

// Kunjat Arduino PWM

int redPin = 11; int greenPin = 6; int bluPin = 9; // Kodet e koduesit Arduino int encoderPinA = 3; kodifikues intPinB = 4; // Variablat e ngjyrave int colorVal; int redVal; int greenVal; int blueVal; // Ndryshoret e koduesit int encoderPos; kodues intPinACurrent; int encoderPinALast = E LART; // Banak tjetër int; void setup () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (kodifikuesiPinB, INPUT_PULLUP); } void loop () {readEncoder (); kodues2rgb (numërues); analogWrite (redPin, redVal); analogWrite (greenPin, greenVal); analogWrite (bluePin, blueVal); } int readEncoder () {encoderPinACurrent = digitalRead (encoderPinA); nëse ((encoderPinALast == LOW) && (encoderPinACurrent == LART)) {if (digitalRead (encoderPinB) == LOW) {encoderPos = encoderPos - 1; } else {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; numërues = koduesPos*8; nëse (numëruesi 1535) {numëruesi = 0; } sporteli i kthimit; } int encoder2rgb (int counterVal) {// E kuqe në të verdhë nëse (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; bluVal = 0; } // E verdhë në të gjelbër tjetër nëse (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - ngjyraVal; greenVal = 255; bluVal = 0; } // E gjelbër në cian tjetër nëse (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Cian në blu tjetër nëse (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; bluVal = 255; } // Blu në magenta tjetër if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; bluVal = 255; } // Magenta në të kuqe else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; bluVal = 255 - ngjyraVal; } kthehu redVal, greenVal, blueVal; }

Recommended: