Paso 4: Programar
He probado unos cuantos programas de ciclo de color RGB, pero terminó seriamente modificar alguien otro programa. He añadido algunos randimizations para hacer la pantalla menos estáticos y que más interesante. Heres es la versión actual.
/*******************************************************\
* RGB_Fade *
* Creado para el uso común! cátodo! RGB LED. *
* Ciclos a través de los tres colores, descolorándose adentro y hacia fuera. *
* Los pernos utilizados deben ser pernos PWM(~). *
* *
* Autor: Anthony Weber *
* Fecha de creación: 03 de abril de 2012 *
* *
* Ligeramente modificado por Hippynerd (hippynurd *
* para hacer las transiciones más suaves y hacer el ciclo *
* más interesante. *
\*******************************************************/
Color Pin Variables
redPin int = 11; ¿No es obvio?
int greenPin = 10;
bluePin int = 9;
Variables de configuración de sincronización
int fadeSpeed = 1; Se trata de cuánto cada LED cambia en cada paso.
int delaytime = 1; retraso entre los ciclos.
int delayCount = 1;
int randCount = 10;
Nota: he intentado hacer fadeSpeed al azar, pero sucedieron cosas malas.
Otras Variables. No es necesario cambiarlos.
int rojo = 0; Posiciones de partida.
verde int = 0; Si cambia, puesto que el código está configurado
int azul = 255; para empezar en el azul, podría actuar gracioso en el primer ciclo.
int modo = 0; 0 - azul a púrpura, 1 - púrpura a rojo, 2 - rojo a amarillo,
3 - amarillo a verde, 4 - verde aqua, 5 - aqua azul
void setup() {//3-5-g-6
declaramos el pin 9 que una salida:
pinMode (bluePin, salida); azul
pinMode (greenPin, salida); verde
pinMode (redPin, salida); rojo
}
void loop() {}
La luz de EM!
analogWrite (bluePin, azul);
analogWrite (greenPin, verde);
analogWrite (redPin, rojo);
Ahora cambiar em!
Si (modo == 0) {//blue a púrpura;
Si (rojo > = 255) {lugares //change!
modo = 1;
Delay(Delaytime*50); no cambian de inmediato.
} else {}
fadeSpeed += rojo;
}
}
else if (modo == 1) {//purple a rojo
Si (azul < = 0) {//change lugares!
modo = 2;
Delay(Delaytime*50); //dont cambio inmediato.
} else {}
azul-= fadeSpeed;
}
}
else if (modo == 2) {//red amarillo
Si (verde > = 255) {lugares //change!
Mode = 3;
Delay(Delaytime*50); //dont cambio inmediato.
} else {}
+= verde fadeSpeed; ///2; Yo frenar esto porque parece que parpadean por demasiado rápido.
Si (verde > 255) verde = 255;
}
}
else if (modo == 3) {//yellow verde
Si (rojo < = 0) {//change lugares!
modo = 4;
Delay(Delaytime*50); //dont cambio inmediato.
} else {}
fadeSpeed = rojo;
}
}
else if (modo == 4) {//green a aqua
Si (azul > = 255) {lugares //change!
modo = 5;
Delay(Delaytime*50); //dont cambio inmediato.
} else {}
fadeSpeed += azul;
}
}
else if (modo == 5) {//aqua al azul
Si (verde < = 0) {//change lugares!
modo = 0;
Delay(Delaytime*50); //dont cambio inmediato.
} else {}
fadeSpeed = verde;
}
}
Este retraso funciona bastante bien, pero no dude en
cambiar esto si desea una transición más rápida pero más suave.
Retraso cambiado al azar para la diversión más pantalla.
delayCount ++;
Si (delayCount > = randCount) {}
delayCount = 1;
randCount = random (500, 5000);
Delaytime = al azar (1, 150); retrasos al azar para mantener las cosas interesantes
}
Delay(Delaytime);
}