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...
(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 <=255
sicherlich 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 += 1
und z -= 1
in Ihren for-Schleifen, sagen Sie z++
und z--
. Leute, die Code lesen, werden die Augenbrauen hochziehen.
Feuerstelle
Vicatcu