//FUNCIONO //En esta version TARRGB6. Se combinara con Remoto Infrarrojo //Avances de Remoto10 //SE CAMBIO EL PIN 11 POR EL 6 YA QUE TENIA PROBLEMAS //PARA EL CONTROL DEL RGB //Para tachos--------------- //Declaro variables globales int red=0,green=0,blue=0; int num; //Fin de tachos-------------- //Para infrarrojos----------- #include #include #include #include int RECV_PIN = 12; //Pin que recibe el envio infrarrojo IRrecv irrecv(RECV_PIN); decode_results results; //results contiene el valor llegado //Fin para infrarrojos------- void setup() { pinMode(5, OUTPUT); // configura ‘pin’ como salida, para visualizar //llegada de desconocido pinMode(12, INPUT);//Configura PIN12 como entrada Serial.begin(9600); //Iniciamos comunicación con el puerto serie //Para tachos------- //Paneo de canales--- analogWrite(9, 255); delay(1000); analogWrite(9, 0); analogWrite(10, 255); delay(1000); analogWrite(10, 0); analogWrite(6, 255); delay(1000); analogWrite(6, 0); //Fin paneo de colores--- //Fin para tachos----- //Para infrarrojos--- irrecv.enableIRIn(); // Empezamos la recepción //Fin para infrarrojos----- } //Funcion que muestra resultado en el Serie Monitor void dump(decode_results *results) { // Dumps out the decode_results structure. // Call this after IRrecv::decode() // Serial.print("("); //Serial.print(results->bits, DEC); //Serial.print(" bits)"); if (results->decode_type == UNKNOWN) { //Serial.print("Unknown encoding: "); digitalWrite(5,HIGH );//Pulso de llegada desconocido delay(100); digitalWrite(5,LOW );//Termina pulso } //Serial.print(results->value, HEX); //Serial.print(" (HEX) , "); //Serial.print(results->value, BIN); // Serial.println(" (BIN)"); } //Fin de funcion que muestra resultado----------- void loop() { //Para infrarrojos---------- if (irrecv.decode(&results)) { dump(&results); //irrecv.resume(); // empezamos una nueva recepción //Serial.print("LEIDO"); //Serial.print(results.value, HEX); Serial.println(results.value); switch(results.value) { case 3238126971://Tecla 0 //Serial.print(results.value); SecuenciaA1(); break; case 3810010651://Tecla ch- Rojo //Serial.print(results.value); Color(255,0,0); break; case 5316027://Tecla ch -Verde //Serial.print(results.value); Color(0,255,0); break; case 4001918335://Tecla ch+ Azul //Serial.print(results.value); Color(0,0,255); break; case 3622325019://Tecla NEXT-Negro //Serial.print(results.value); Color(0,0,0); break; case 553536955://Tecla Play Pause - Lila //Serial.print(results.value); Color(255,0,255); break; case 1386468383://Tecla Play Pause -Amarillo //Serial.print(results.value); Color(255,255,0); break; case 3855596927://Tecla EQ -Blanco //Serial.print(results.value); Color(255,255,255); break; case 2534850111://Tecla 0 //Serial.print(results.value); SecuenciaA2(); break; } irrecv.resume(); // empezamos una nueva recepción } //delay(300); //retardo de infrarrojo //Fin para infrarrojos---------- //Relacion infrarrojos tachos--- //Fin relacion infrarrojos tachos--- //Para tachos------------------- /* * Evaluamos el momento en el cual recibimos un caracter * a través del puerto serie */ if (Serial.available()>0) { //Delay para favorecer la lectura de caracteres delay(22); //Se crea una variable que servirá como buffer String bufferString = ""; /* * Se le indica a Arduino que mientras haya datos * disponibles para ser leídos en el puerto serie * se mantenga concatenando los caracteres en la * variable bufferString */ while (Serial.available()>0) { bufferString += (char)Serial.read(); } //Se transforma el buffer a un número entero //int num = bufferString.toInt(); num = bufferString.toInt(); //int red=0,green=0,blue=0; //Colores fijos if (num==700) { analogWrite(9, 0) ; // Rojo PIN 9 analogWrite(10, 0) ; // Green - Verde PIN 10 analogWrite(6, 0) ; // blue - blue PIN 11 red= 0; green= 0; blue= 0; } if (num==750) //Rojo { analogWrite(9, 255) ; // Rojo PIN 9 analogWrite(10, 0) ; // Green - Verde PIN 10 analogWrite(6, 0) ; // blue - blue PIN 11 red= 255; green= 0; blue= 0; } if (num==800) //Verde { analogWrite(9, 0) ; // Rojo PIN 9 analogWrite(10, 255) ; // Green - Verde PIN 10 analogWrite(6, 0) ; // blue - blue PIN 11 red= 0; green= 255; blue= 0; } if (num==850) //blue { analogWrite(9, 0) ; // Rojo PIN 9 analogWrite(10, 0) ; // Green - Verde PIN 10 analogWrite(6, 255) ; // blue - blue PIN 11 red= 0; green= 0; blue= 255; } if (num==900) //Blanco { analogWrite(9, 255) ; // Rojo PIN 9 analogWrite(10, 255) ; // Green - Verde PIN 10 analogWrite(6, 255) ; // blue - blue PIN 11 red= 255; green= 255; blue= 255; } //Secuencias en programa del Arduino--- if (num==130) { SecuenciaA1(); } //--------------------------------------------- //Se ordena el encendido de los LEDs por pasos //Va de 0 a 255 con pasos de 5 // Subiendo intensidad---------- if (num==111) { Mas_red(); } if (num ==222) { Mas_green(); } if (num ==333) { //Serial.print(num); //Serial.print(blue); Mas_blue(); } //Fin subiendo intensidad-------------- //--- Bajando intensidad de a pasos------------- if (num==444) { Menos_red(); } if (num ==555) { Menos_green(); } if (num ==666) { Menos_blue(); } //Fin bajando intensidad de a pasos----------------- //-------------------------------------------------- } } //************************************************* //Funciones creadas---------------------- void Menos_blue() { blue = blue - 5; if (blue == -5) { blue = blue + 5; } analogWrite(6, blue) ;// blue -blue PIN 11 } //-------------------- void Menos_green() { green= green - 5; if (green == -5) { green = green + 5; } analogWrite(10, green) ; // Green - Verde PIN 10 } //-------------------- void Menos_red() { red= red - 5; if (red == -5) { red= red +5; } analogWrite(9, red) ; // Rojo PIN 9 } //----------------------- void Mas_blue() { //Serial.print(num); blue = blue + 5; Serial.print(blue); if (blue > 255) { blue = blue -5; } analogWrite(6, blue); } //-------------------- void Mas_green() { green= green + 5; if (green > 255) { green = green - 5; } analogWrite(10, green) ; // Green - Verde PIN 10 } //-------------------- void Mas_red() { red= red +5; if (red > 255) { red= red-5; } analogWrite(9, red) ; // Rojo PIN 9 } //------------------------------ void Color(int R, int G, int B) { analogWrite(9 , R) ; // Rojo analogWrite(10, G) ; // Green - Verde analogWrite(6, B) ; // blue - blue } //------------------------- void SecuenciaA1() { for (int i =0 ; i<255 ; i++) { Mas_red();//Sube a maximo rojo delay(20); Color(0, 0, 0); //negro delay(25); } Color(0, 0, 0); //negro for (int i =0 ; i<255 ; i++) { Mas_green();//Sube a maximo verde delay(20); Color(0, 0, 0); //negro delay(25); } Color(0, 0, 0); //negro for (int i =0 ; i<255 ; i++) { Mas_blue();//Sube a maximo blue delay(20); Color(0, 0, 0); //negro delay(25); } for (int i =0 ; i<25 ; i++) { Color(0, 0, 0); //negro delay (100); Color(255, 0, 0); delay (100); Color(0, 0, 255); delay (300); Color(0, 255, 0); delay (100); Color(0, 0, 0); //negro delay (200); Color(0, 255, 0); delay (100); Color(0, 0, 0); //negro } } void SecuenciaA2() { for (int i =0 ; i<25 ; i++) { Color(255, 0, 255); //negro delay (100); Color(0, 255, 0); delay (100); Color(255, 0, 0); delay (100); Color(255, 255, 0); delay (100); Color(255, 255, 255); //negro delay (200); Color(255, 0, 0); delay (100); Color(0, 0, 0); //negro } }