Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
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
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
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; }