//Genera los colores R, G, B, Y, C, M y W
//Permite modificar el brillo
//Para nombrar los pines
int pinRojo = 12;
int pinVerde = 14;
int pinAzul = 27;
int rojo = 0;
int verde = 0;
int azul = 0;
int brillo = 255;
//Declaro las funciones a usar
void color(int luzRojo, int luzVerde, int luzAzul);
void cambiaBrillo(int salto);
void setup()
{ //Configuramos los pines como salidas
pinMode(pinRojo, OUTPUT);
pinMode(pinVerde, OUTPUT);
pinMode(pinAzul, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) { //Si se enviado algo por el serial
switch (Serial.read()) { //Analizanos lo leido por el serial
case 'R': //Saturamos rojo
case 'r':
rojo = 255;
verde = 0;
azul = 0;
break;
case 'G': //Saturamos verde
case 'g':
rojo = 0;
verde = 255;
azul = 0;
break;
case 'B': //Saturamos azul
case 'b':
rojo = 0;
verde = 0;
azul = 255;
break;
case 'Y': //Saturamos amarillo
case 'y':
rojo = 255;
verde = 255;
azul = 0;
break;
case 'C': //Saturamos cian
case 'c':
rojo = 0;
verde = 255;
azul = 255;
break;
case 'M': //Saturamos magenta
case 'm':
rojo = 255;
verde = 0;
azul = 255;
break;
case 'W': //Saturamos blanco
case 'w':
rojo = 255;
verde = 255;
azul = 255;
break;
case '+': //aumentamos el brillo en 15
cambiaBrillo(15);
break;
case '-': //disminuimos el brillo en 15
cambiaBrillo(-15);
break;
}
}
color(rojo, verde, azul);
delay(100);
}
//Aplicamos el color modificado por el brillo
void color(int luzRojo, int luzVerde, int luzAzul) {
analogWrite(pinRojo, luzRojo * brillo / 255);
analogWrite(pinVerde, luzVerde * brillo / 255);
analogWrite(pinAzul, luzAzul * brillo / 255);
}
//Modificamos por el brillo
void cambiaBrillo(int salto) {
brillo += salto;
if (brillo > 255) brillo = 255; //Maximo brillo
if (brillo < 0) brillo = 0; //Minimo brillo
Serial.println(brillo);
}