#include #include // Biblioteca para controlar o servo motor #define servo1 2 // Pino do servo motor #define LED_VD 8 // LED verde (indica 180 graus) #define LED_VM 10 // LED vermelho (indica 0 graus) Servo s1; bool sistema = false; int anguloIO = 0; int velocidade = 30; int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(LED_VD, OUTPUT); pinMode(LED_VM, OUTPUT); digitalWrite(LED_VD, LOW); digitalWrite(LED_VM, LOW); s1.attach(servo1); s1.write(0); } void loop() { if (irrecv.decode()) { uint8_t codigoRecebido = irrecv.decodedIRData.command; if (irrecv.decodedIRData.flags != IRDATA_FLAGS_IS_REPEAT) { Serial.print("Código recebido: "); Serial.println(codigoRecebido); } if (codigoRecebido == 22) piscarLeds(); // Inicia sistema if (codigoRecebido == 13) apagarLeds(); // Desliga sistema if (codigoRecebido == 69) movimentarServo180(); if (codigoRecebido == 71) movimentarServo0(); irrecv.resume(); } } void movimentarServo180() { if (sistema == true && anguloIO == 0) { for (int angulo = anguloIO; angulo <= 180; angulo++) { s1.write(angulo); delay(velocidade); digitalWrite(LED_VD, !digitalRead(LED_VD)); } anguloIO = 180; digitalWrite(LED_VD, HIGH); digitalWrite(LED_VM, LOW); } } void movimentarServo0() { if (sistema == true && anguloIO == 180) { for (int angulo = anguloIO; angulo >= 0; angulo--) { s1.write(angulo); delay(velocidade); digitalWrite(LED_VM, !digitalRead(LED_VM)); } anguloIO = 0; digitalWrite(LED_VD, LOW); digitalWrite(LED_VM, HIGH); } }