En los últimos días he estado trabajando en un LED RGB de ánodo en Arduino, he intentado que haga un espectro RGB, pero todo lo que obtengo son solo los colores de rojo a verde, luego se atasca en blanco. y cyan, creo que el led rojo del Ánodo RGB se enciende y se apaga, ya que la combinación de verde y azul es cyan y los tres resultan blancos si son iguales que en este caso supongo que lo son (no del todo seguro).
La cuestión es que el ánodo RGB no muestra todos los colores, lo hice para que el nivel de voltaje dado al ánodo RGB aumente con una función de bucle y disminuya una vez que llegue a 255 con una función decreciente, aquí está el código:
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);
}
}
Gracias por su ayuda, no se preocupen por mi inglés...
(1) Ninguna de sus funciones Inc / Dec usa el argumento que se les pasa. No estoy seguro si eso fue intencional, pero es digno de mención.
(2) Sus funciones Dec tienen una condición de terminación sin sentido en sus bucles. En lugar de <=255
seguramente estos deberían tener >=0
?
(3) La forma en que escribió su bucle básicamente va a hacer la siguiente secuencia (después de arreglar (2) es decir):
#000000 // BLACK
#010000
...
#FF0000 // RED
#FF0100
...
#FFFF00 // YELLOW
#FFFF01
...
#FFFFFF // WHITE
#FEFFFF
...
#00FFFF // CYAN
#00FEFF
...
#0000FF // BLUE
#0000FE
...
#000000 // BLACK
No estoy seguro de que eso sea lo que pretendías, pero ahí lo tienes.
(4) No diga z += 1
y z -= 1
en sus bucles for, diga z++
y z--
. Las personas que leen código levantarán las cejas ante lo anterior.
Hogar
vicatcu