Inhoudsopgave:

Arduino RGB LED-stripcontroller - Ajarnpa
Arduino RGB LED-stripcontroller - Ajarnpa

Video: Arduino RGB LED-stripcontroller - Ajarnpa

Video: Arduino RGB LED-stripcontroller - Ajarnpa
Video: Контроллер адресной RGB ленты 2024, Juli-
Anonim
Arduino RGB LED-stripcontroller
Arduino RGB LED-stripcontroller

Vaak worden, wanneer mensen hun RGB LED-strip met een Arduino willen aansturen, drie potentiometers gebruikt om de rode, groene en blauwe kleuren te mengen. Dit werkt en zou perfect kunnen zijn voor uw behoeften, maar ik wilde iets intuïtiever maken, zoiets als een kleurenwiel.

Dit project lijkt een perfecte toepassing voor een roterende encoder. Dit is een apparaat dat de beweging van zijn as omzet in een digitale uitgang. Wanneer de as wordt gedraaid, zendt de encoder een signaal (puls) uit dat kan worden gemeten door een Arduino. Voor meer informatie over roterende encoders, kun je deze video bekijken, waarin het meer diepgaand wordt uitgelegd.

In deze Instructable laat ik je zien hoe je een Arduino RGB LED-stripcontroller maakt met behulp van een roterende encoder. Dit Instructable behandelt de constructie van het circuit op een breadboard. U kunt echter uw eigen PCB maken om een Arduino-shield te maken!

Stap 1: Onderdelen

Onderdelen
Onderdelen
Onderdelen
Onderdelen

Voor de RGB LED strip controller heb je de volgende materialen nodig:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, elke N-kanaal MOSFET met logisch niveau is voldoende zolang deze minimaal 12V heeft en de stroom die uw LED-strip verbruikt.
  • 1x roterende encoder
  • 1x 12V 2A voeding, de stroom die de voeding moet leveren kan afhankelijk zijn van de lengte van de gebruikte LED strip.
  • 16x mannelijke naar mannelijke jumperdraden
  • 1x Soldeerloos breadboard, elk breadboard is geschikt zolang het voldoende groot is.

Stap 2: Circuit

Stroomkring
Stroomkring
Stroomkring
Stroomkring

Sluit de Arduino aan op de 12V en GND-rail van het breadboard. Sluit vervolgens de overige onderdelen als volgt aan:

Roterende encoder

Pin A - D4

Pin B - D3

GND - GND

MOSFET Rood

Poort - GND

Afvoer - LED strip rode draad

Bron - D11

MOSFET GreenGate - GND

Afvoer - LED strip groene draad

Bron - D9

MOSFET BlueGate - GND

Afvoer - LED strip blauwe draad

Bron - D6

Stap 3: Coderen

// Arduino PWM-pinnen

int redPin = 11; int groenePin = 6; int blauwPin = 9; // Arduino-encoderpinnen int encoderPinA = 3; int-encoderPinB = 4; // Kleurvariabelen int colorVal; int redVal; int groenVal; int blauwVal; // Encodervariabelen int encoderPos; int encoderPinACCurrent; int encoderPinAlast = HOOG; // Andere int-teller; void setup(){ pinMode(encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } void loop(){ readEncoder(); encoder2rgb (teller); analogWrite(redPin, redVal); analogWrite(greenPin, greenVal); analogWrite(bluePin, blueVal); } int readEncoder(){ encoderPinACurrent = digitalRead(encoderPinA); if ((encoderPinALast == LAAG) && (encoderPinACurrent == HOOG)){ if (digitalRead (encoderPinB) == LAAG){ encoderPos = encoderPos - 1; } else { encoderPos = encoderPos + 1; } } encoderPinAlast = encoderPinACurrent; teller = encoderPos*8; if (teller 1535){ teller = 0; } retourteller; } int encoder2rgb (int counterVal) {// Rood naar geel als (counterVal <= 255) { colorVal = counterVal; roodVal = 255; greenVal = kleurVal; blauwVal = 0; } // Geel naar groen else if (counterVal <= 511) { colorVal = counterVal - 256; redVal = 255 - kleurVal; groenVal = 255; blauwVal = 0; } // Groen naar cyaan else if (counterVal <= 767) { colorVal = counterVal - 512; roodVal = 0; groenVal = 255; blueVal = kleurVal; } // Cyaan naar blauw else if (counterVal <= 1023){ colorVal = counterVal - 768; roodVal = 0; groenVal = 255 - kleurVal; blauwVal = 255; } // Blauw naar magenta anders if (counterVal <= 1279) { colorVal = counterVal - 1024; redVal = kleurVal; groenVal = 0; blauwVal = 255; } // Magenta naar rood else{ colorVal = counterVal - 1280; roodVal = 255; groenVal = 0; blueVal = 255 - colorVal; } retourneer redVal, greenVal, blueVal; }

Aanbevolen: