Está en la página 1de 2

/*

www.diymakers.es
by A.Garc�a
Controlar servomotor con mando IR
Tutorial en: http://diymakers.es/controlar-servomotor-con-mando-ir/
*/

#include <Servo.h> //Importamos la librer�a para controlar servomotores


#include <IRremote.h> //Importamos la librer�a IRremote para recibir el se�al IR

Servo servomotor; //Nombre del servomotor

int RECV_PIN = 11; //Pin del receptor IR


IRrecv irrecv(RECV_PIN);

decode_results results; //Variable del c�digo NEC

int posicion; //Variable para determinar la posici�n angular del servo

void setup()
{
Serial.begin(9600); //Inicializamos comunicaci�n serie
irrecv.enableIRIn(); //Inicializamos el receptor IR
servomotor.attach(3); //Asociamos el servomotor al pin 3 del Arduino
posicion=90; //Ponemos el servo a 90� al iniciar el programa
}

void loop()
{
if (irrecv.decode(&results)) //Si el receptor IR recibe una se�al, entra dentro
de la funci�n
{
switch(results.value) //Despu�s de obtener el c�digo NEC almacenada en la
//variable "results.value", es comparada con los c�digos
de nuestras teclas
{
case 0b11000010011010111111000001000100: //C�digo NEC de una tecla. Tiene que
empezar con "0b" para que el Arduino
//sepa que es binario
posicion=90; //Posici�n del servo a 90�
Serial.print("Posicion angular = "); //Visualizaci�n de la posici�n angular
Serial.print(posicion);
Serial.println("");
break;

case 0b1010011100000000001111011101000:
posicion=0;//Posici�n del servo a 0�
Serial.print("Posicion angular = ");
Serial.print(posicion);
Serial.println("");
break;

case 0b1110101100011001001110110000010:
posicion=180;//Posici�n del servo a 180�
Serial.print("Posicion angular = ");
Serial.print(posicion);
Serial.println("");
break;
case 0b11000100111010111100100101000:
posicion=posicion+5;//Posici�n del servo a +5�
if(posicion>180){posicion=180;} //Por si seguimos pulsando la tecla cuando la
posici�n angular esta a 180�
//para que no de un valor superior a este.
Serial.print("Posicion angular = ");
Serial.print(posicion);
Serial.println("");
break;

case 0b1011111000100101110100011000100:
posicion=posicion-5;//Posici�n del servo a -5�
if(posicion<0){posicion=0;}//Por si pulsamos la tecla cuando la posici�n
angular esta a 0�
//para que no de un valor inferior a este.
Serial.print("Posicion angular = ");
Serial.print(posicion);
Serial.println("");
break;

}
servomotor.write(posicion); //El servo se posiciona a la posici�n angular que
determina la variable "posicion"

irrecv.resume(); //Preparado para recibir la siguiente se�al IR

También podría gustarte