Inhaltsverzeichnis:

Arduino RGB LED-Streifen-Controller - Gunook
Arduino RGB LED-Streifen-Controller - Gunook

Video: Arduino RGB LED-Streifen-Controller - Gunook

Video: Arduino RGB LED-Streifen-Controller - Gunook
Video: Beginner's Guide to Using LED Strips with Arduino 2024, Juli
Anonim
Arduino RGB-LED-Streifen-Controller
Arduino RGB-LED-Streifen-Controller

Wenn Leute ihren RGB-LED-Streifen mit einem Arduino steuern möchten, werden oft drei Potentiometer verwendet, um die Farben Rot, Grün und Blau zu mischen. Dies funktioniert und könnte für Ihre Bedürfnisse völlig in Ordnung sein, aber ich wollte etwas intuitiveres machen, so etwas wie ein Farbrad.

Dieses Projekt scheint eine perfekte Anwendung für einen Drehgeber zu sein. Dies ist ein Gerät, das die Bewegung seiner Welle in einen digitalen Ausgang umwandelt. Wenn die Welle gedreht wird, sendet der Encoder ein Signal (Impuls) aus, das von einem Arduino gemessen werden kann. Weitere Informationen zu Drehgebern finden Sie in diesem Video, in dem es ausführlicher erklärt wird.

In diesem Instructable zeige ich Ihnen, wie Sie einen Arduino RGB-LED-Streifen-Controller mit einem Drehgeber herstellen. Dieses Instructable deckt den Aufbau der Schaltung auf einem Steckbrett ab. Sie könnten jedoch Ihre eigene Leiterplatte herstellen, um ein Arduino-Shield zu erstellen!

Schritt 1: Teile

Teile
Teile
Teile
Teile

Für den RGB-LED-Strip-Controller benötigen Sie folgende Materialien:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, jeder N-Kanal-MOSFET mit Logikpegel funktioniert, solange er für mindestens 12 V ausgelegt ist und der Strom Ihres LED-Streifens verbraucht wird.
  • 1x Drehgeber
  • 1x 12V 2A Netzteil, der Strom, den das Netzteil liefern muss, kann von der Länge des verwendeten LED-Streifens abhängen.
  • 16x Stecker-zu-Stecker-Überbrückungsdrähte
  • 1x Lötfreies Steckbrett, jedes Steckbrett reicht aus, solange es ausreichend groß ist.

Schritt 2: Schaltung

Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis

Verbinden Sie das Arduino mit der 12V- und GND-Schiene des Steckbretts. Verbinden Sie dann die anderen Teile wie folgt:

Drehcodierer

Stift A - D4

Stift B - D3

Masse - Masse

MOSFET Rot

Gate - GND

Drain - LED-Streifen rotes Kabel

Quelle - D11

MOSFET GreenGate - GND

Drain - LED-Streifen grüner Draht

Quelle - D9

MOSFET BlueGate - GND

Drain - LED-Streifen blaues Kabel

Quelle - D6

Schritt 3: Code

// Arduino PWM-Pins

int redPin = 11; int grünPin = 6; int bluePin = 9; // Arduino-Encoder-Pins Int EncoderPinA = 3; int EncoderPinB = 4; // Farbvariablen int colorVal; int redVal; int greenVal; int blueVal; // Encoder-Variablen int EncoderPos; int EncoderPinACurrent; int EncoderPinALast = HIGH; // Anderer int-Zähler; Void setup () { PinMode (encoderPinA, INPUT_PULLUP); pinMode (EncoderPinB, INPUT_PULLUP); aufrechtzuerhalten. Void Schleife () {readEncoder (); Encoder2rgb (Zähler); analogWrite (redPin, redVal); analogWrite(greenPin, greenVal); analogWrite (bluePin, blueVal); aufrechtzuerhalten. Int readEncoder () { EncoderPinACurrent = digitalRead (encoderPinA); if ((encoderPinALast == LOW) && (encoderPinACurrent == HIGH)) { if (digitalRead(encoderPinB) == LOW){ EncoderPos = EncoderPos - 1; aufrechtzuerhalten. Sonst { EncoderPos = EncoderPos + 1; } } EncoderPinALast = EncoderPinACurrent; Zähler = EncoderPos*8; wenn (Zähler 1535) {Zähler = 0; } Rückgabezähler; aufrechtzuerhalten. Int Encoder2rgb (int counterVal) {// Rot zu Gelb if (counterVal <= 255) { colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // Gelb nach Grün sonst if (counterVal <= 511) { colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Grün zu Cyan sonst if (counterVal <= 767) { colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // Cyan zu blau sonst if (counterVal <= 1023) { colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // Blau zu Magenta sonst if (counterVal <= 1279) { colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // Magenta zu rot else { colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } redVal, greenVal, blueVal zurückgeben; }

Empfohlen: