Problem mit dem Arduino-RGB-Spektrum

In den letzten Tagen habe ich an einer Anoden-RGB-LED in Arduino gearbeitet. Ich habe versucht, sie dazu zu bringen, ein RGB-Spektrum zu erstellen, aber alles, was ich bekommen würde, sind nur die Farben von Rot nach Grün, dann würde sie auf Weiß hängen bleiben und Cyan, ich glaube, dass die rote LED in der RGB-Anode ein- und ausschaltet, da die Kombination von Grün und Blau Cyan ist und die drei weiß ergeben, wenn sie gleich sind, was in diesem Fall meiner Meinung nach (nicht ganz) der Fall ist Sicher).

Die Sache ist, dass die RGB-Anode nicht alle Farben anzeigt, ich habe es so gemacht, dass der an die RGB-Anode gegebene Spannungspegel mit einer Schleifenfunktion erhöht und verringert wird, sobald er 255 mit einer abnehmenden Funktion erreicht hat, hier ist der Code:

    int redPin = 11;
int greenPin = 10;
int bluePin = 9;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}
void loop() {

redFuncInc(1);
delay(100);
greenFuncInc(1);
delay(150);
blueFuncInc(1);
delay(200);

// calling decreasing methods

redFuncDec(255);
delay(10);
greenFuncDec(255);
delay(15);
blueFuncDec(255);
delay(20);

}


// Increasing from rainbow spectrum

void redFuncInc(int red){
  for (int i = 1; i<=255; i +=1){

  analogWrite(redPin, i);
  delay(10);
}
}
void greenFuncInc(int green){
  for (int z = 1; z<=255; z +=1){

  analogWrite(greenPin, z);
  delay(20);
}
}
void blueFuncInc(int blue){
  for (int u = 1; u<=255; u +=1){

  analogWrite(bluePin, u);
  delay(30);
}
}
// Decreasing from rainbow spectrum

void redFuncDec(int red){
  for (int y = 255;  y <=255;  y -=1){

    analogWrite(redPin, y);
    delay(10);
  }
}
void greenFuncDec(int green){
  for (int x = 255;  x <=255;  x -=1){

    analogWrite(greenPin, x);
    delay(10);
  }
}
void blueFuncDec(int blue){
  for (int g = 255;  g <=255;  g -=1){

    analogWrite(bluePin, g);
    delay(10);
  }
}

Danke für deine Hilfe, bitte vergiss mein Deutsch...

Was ist eine "RGB-Anode"?
Ich verstehe darunter eine "Common Anode RGB" -LED

Antworten (1)

(1) Keine Ihrer Inc / Dec-Funktionen verwendet das Argument, das ihnen übergeben wird. Ich bin mir nicht sicher, ob das Absicht war, aber es ist bemerkenswert.

(2) Ihre Dec-Funktionen haben eine unsinnige Beendigungsbedingung in ihren Schleifen. Anstelle von <=255sicherlich sollten diese >=0?

(3) So wie Sie Ihre Schleife geschrieben haben, wird sie im Grunde die folgende Sequenz ausführen (nachdem Sie (2) behoben haben):

#000000 // BLACK
#010000
...
#FF0000 // RED
#FF0100
...
#FFFF00 // YELLOW
#FFFF01
...
#FFFFFF // WHITE
#FEFFFF
...
#00FFFF // CYAN
#00FEFF
...
#0000FF // BLUE
#0000FE
...
#000000 // BLACK

Ich bin mir nicht sicher, ob Sie das beabsichtigt haben, aber da haben Sie es.

(4) Sagen Sie nicht z += 1und z -= 1in Ihren for-Schleifen, sagen Sie z++und z--. Leute, die Code lesen, werden die Augenbrauen hochziehen.

Danke für die schnelle Antwort, wie kann ich Farben wie Lila und Pink anzeigen lassen und es einfach das Spektrum vervollständigen und auf dem Laufenden halten? (Ich bin ziemlich neu bei Arduino)
Es gibt keinen kanonischen Weg, das RGB-Spektrum zu durchqueren. Der Farbraum ist eine komplizierte Sache, aber Sie könnten davon profitieren, wenn Sie sich über den Farbraum Hue Saturation Luminance informieren und online nach Code suchen, der zwischen HSL und RGB konvertiert.