Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
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
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
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; }