/*Este programa mueve servo en 3 posiciones utilzando control * remoto infrarrojo con su receptor que vienen usualmente * en los KIT de Arduino. * Tecla 1 Derecha - Tecla 2 centro- Tecla 3 izquierda * Muestra por Monitor Serie los codigos en DECIMAL */ //Para infrarrojos----------- #include #include #include #include //Fin lista bibliotecas infrarrojo------ int receptor = 12;//Define PIN recepcion de infrarrojo IRrecv irrecv(receptor); decode_results codigo; //OBJETO CODIGO DE CLASE decode_result, oriundo de IRremote.h //--Fin para infrarrojos------- //Para Motor servo ---------- #include // incluye libreria de Servo Servo servo1; // crea objeto int PINSERVO = 2; // pin 2 conectado a señal del servo int PULSOMIN = 750; // pulso minimo en microsegundos int PULSOMAX = 2750; // pulso maximo en microsegundos int num; // variable para almacenar valor leido int ANGULO; // valor de angulo a cargar en el servo int trespservo =300;// tiempo de detencion en posicion del servor int ledderecha = 5; //Define el PIN de LED testigo giro derecha int ledcentro = 6; //Define el PIN de led testigo giro al centro int ledizquierda = 7; // Define el PIN de led testigo giro a la izquierda void setup() { Serial.begin(9600); irrecv.enableIRIn(); // INICIA LA RECEPCIÓN INFRARROJA servo1.attach(PINSERVO, PULSOMIN, PULSOMAX); // inicializacion de servo pinMode(ledderecha, OUTPUT);//LED ROJO pinMode(ledcentro, OUTPUT);// LED AMARILLO pinMode(ledizquierda, OUTPUT);//LED VERDE } void loop() { if (irrecv.decode(&codigo)) { Serial.println(codigo.value, DEC);//Muestra por MONITOR SERIAL lo que recibe //en sistema DECIMAL if (codigo.value==16724175) //CÓDIGO DEL NÚMERO 1 { digitalWrite(ledderecha,HIGH); //ENCIENDE LED DERECHA digitalWrite(ledcentro,LOW);//APAGA LED CENTRO digitalWrite(ledizquierda,LOW);//APAGA LED IZQUIERDA ANGULO =10; girarservo(); delay(trespservo); } if (codigo.value==16718055)//CÓDIGO DEL NÚMERO 2 { digitalWrite(ledderecha,LOW); //APAGA LED DERECHA digitalWrite(ledcentro,HIGH);//ENCIENDE LED CENTRO digitalWrite(ledizquierda,LOW);//APAGA LED IZQUIERDA ANGULO =90; girarservo(); delay(trespservo); } if (codigo.value==16743045)//CÓDIGO DEL NÚMERO 3 { digitalWrite(ledderecha,LOW); //APAGA LED DERECHA digitalWrite(ledcentro,LOW);//APAGA LED CENTRO digitalWrite(ledizquierda,HIGH);//ENCIENDE LED IZQUIERDA ANGULO =175; girarservo(); delay(trespservo); } delay(500); irrecv.resume(); } } //---Funciones------------------------------- //-----------Funcion girar servo------------------- void girarservo() { servo1.write(ANGULO); // envia al servo el valor del angulo delay(20); // demora para que el servo llegue a posicion } //-------------------------------------