Arduino para 4º de ESO
Dejar encendido un LED
#define PIN_ROJO 3 //Utilizar pines PWM
#define PIN_VERDE 5
#define PIN_AZUL 6
#define VELOCIDAD 300 //Velocidad de transición entre colores
float color_actual[3]={0,0,0}; //Valores RGB actuales. Primer array
float color_diana[3]; //Valores RGB destino. Segundo array
float incremento[3]; //Incrementos. Tercer array
void setup() {
pinMode(PIN_ROJO,OUTPUT);
pinMode(PIN_VERDE,OUTPUT);
pinMode(PIN_AZUL,OUTPUT);
pinMode(A0,INPUT);
randomSeed(analogRead(A0)); //Inicializa la función aleatoria
}
void loop() {
for(byte i = 0 ; i < 3 ; i++){ //Calcula el nuevo color aleatorio
color_diana[i] = random(256);
incremento[i] = (color_diana[i] - color_actual[i])/VELOCIDAD;
}
for(int x = 0 ; x < VELOCIDAD ; x++){ //Varía el color hasta llegar al objetivo
analogWrite(PIN_ROJO, int(color_actual[0]));
analogWrite(PIN_VERDE, int(color_actual[1]));
analogWrite(PIN_AZUL, int(color_actual[2]));
delay(10);
for(byte i = 0 ; i < 3 ; i++)
color_actual[i] = color_actual[i] + incremento[i];
}
}
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0