Saltar la navegación

Construir una lámpara de efectos RGB

#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];
  }
}

Creado con eXeLearning (Ventana nueva)