Ovládač pruhu LED Arduino RGB LED: 4 kroky
Ovládač pruhu LED Arduino RGB LED: 4 kroky
Arduino RGB LED páskový ovládač
Arduino RGB LED páskový ovládač

Keď ľudia chcú ovládať svoj RGB LED pásik pomocou Arduina, často sa používajú tri potenciometre na zmiešanie červenej, zelenej a modrej farby. To funguje a pre vaše potreby to môže byť úplne v poriadku, ale chcel som urobiť niečo intuitívnejšie, niečo ako farebné koliesko.

Tento projekt sa zdá byť perfektnou aplikáciou pre rotačný kodér. Jedná sa o zariadenie, ktoré prevádza pohyb svojho hriadeľa na digitálny výstup. Keď je hriadeľ otočený, kodér vyšle signál (impulz), ktorý je možné merať pomocou Arduina. Ak sa chcete dozvedieť viac o rotačných snímačoch, môžete si pozrieť toto video, ktoré to vysvetľuje podrobnejšie.

V tomto návode vám ukážem, ako vytvoriť ovládač LED pásu Arduino RGB pomocou rotačného enkodéra. Tento návod sa týka konštrukcie obvodu na doske. Môžete si však vytvoriť vlastnú PCB a vytvoriť tak štít Arduino!

Krok 1: Diely

Časti
Časti
Časti
Časti

Na ovládač RGB LED pásov budete potrebovať nasledujúce materiály:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, akýkoľvek N-kanálový logický stupeň MOSFET bude fungovať, pokiaľ je dimenzovaný na minimálne 12V a prúd, ktorý spotrebuje váš pásik LED.
  • 1x rotačný kodér
  • 1x napájací zdroj 12V 2A, prúd, ktorý musí napájací zdroj dodať, závisí od dĺžky použitého LED pásu.
  • 16x prepojovacie vodiče medzi mužom a mužom
  • 1x spájkovačka bez spájkovania, akýkoľvek prkénko bude fungovať, pokiaľ je dostatočne veľké.

Krok 2: Okruh

Obvod
Obvod
Obvod
Obvod

Pripojte Arduino k 12V a GND lište nepájivej dosky. Potom pripojte ostatné diely nasledovne:

Rotačný kodér

Kolík A - D4

Kolík B - D3

GND - GND

MOSFET červený

Brána - GND

Odtok - LED pásik červený drôt

Zdroj - D11

MOSFET GreenGate - GND

Odvod - LED pásik zelený drôt

Zdroj - D9

MOSFET BlueGate - GND

Odtok - LED pásik modrý drôt

Zdroj - D6

Krok 3: Kód

// Piny Arduino PWM

int redPin = 11; int greenPin = 6; int bluePin = 9; // Kodéry Arduino piny int encoderPinA = 3; int kodérPinB = 4; // Farebné premenné int colorVal; int redVal; int greenVal; int blueVal; // Premenné kodéra int encoderPos; int kodérPinACurrent; int kodérPinALast = HIGH; // Iné int počítadlo; neplatné nastavenie () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop () {readEncoder (); encoder2rgb (počítadlo); 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; počítadlo = kodérPos*8; if (počítadlo 1535) {počítadlo = 0; } počítadlo spiatočky; } int encoder2rgb (int counterVal) {// Červená až žltá if (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // Žltá až zelená else if (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Zelená až azúrová else if (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Azúrová až modrá inak if (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Modrá až purpurová else if (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Magenta to red else {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } vrátiť redVal, greenVal, blueVal; }

Odporúča: