Saltar la navegación

Movimiento de servo a varias posiciones por mando a distancia

Movimiento de servo a varias posiciones por mando a distancia

/*
Esta aplicación es una combinación del ejemplo_06_03 y del 26_03b

Los códigos del mando a distancia keyes son:
Boton_1 = 0xFF6897
Boton_2= 0xFF9867
Boton_3=0xFFB04F
Boton_0=0xFF4AB5

Los códigos del mando a distancia simulador Tinkercad son:
Boton_1 0xFD08F7
Boton_2 0xFD8877
Boton_3 0xFD48B7
Boton_0 0xFD30CF

*/
#include <Servo.h>
Servo myservo;
#include <IRremote.h> // importa libreria IRremote
#define Boton_1 0xFD08F7 // reemplaza cada instancia de Boton_1 por su valor HEX
#define Boton_2 0xFD8877 // reemplaza cada instancia de Boton_2 por su valor HEX
#define Boton_3 0xFD48B7 // reemplaza cada instancia de Boton_3 por su valor HEX
#define Boton_0 0xFD30CF // reemplaza cada instancia de Boton_0 por su valor HEX

int SENSOR = 11; // sensor KY-022 a pin digital 11
IRrecv irrecv(SENSOR); // establece al 11 para objeto irrecv
decode_results codigo; // crea objeto código de la clase decode_results


void setup() {
myservo.attach(9);
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
irrecv.enableIRIn(); // inicializa recepcion de datos


}

void loop() {

if (irrecv.decode(&codigo)) { // si existen datos ya decodificados
Serial.println(codigo.value, HEX);// imprime valor en hexadecimal en monitor
if (codigo.value == Boton_1){ // si código recibido es igual a Boton_1
myservo.write(60);
delay(1000); //
}

if (codigo.value == Boton_2){ // si código recibido es igual a Boton_2
myservo.write(120);
delay(1000);
}

if (codigo.value == Boton_3) { // si codigo recibido es igual a Boton_3
myservo.write(180);
delay(1000);
}

if (codigo.value == Boton_0) {// si codigo recibido es igual a Boton_0
myservo.write(0);
delay(1000);
}

irrecv.resume(); // resume la adquisicion de datos
} //cierra el if inicial
delay (100); // breve demora de 100 ms.
} //cierra el loop