Inhoudsopgave:
Video: Arduino RGB LED-stripcontroller - Ajarnpa
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
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
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
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; }