#include <IRremote.h>
#include <ESP32Servo.h>
#define servoPin 2
#define PIN_RECEIVER 19 // Signal Pin of IR receiver
IRrecv receiver(PIN_RECEIVER);
Servo servo;
int pos = 90;
void setup()
{
receiver.enableIRIn(); // Start the receiver
servo.attach(servoPin, 500, 2400);
Serial.begin(9600);
Serial.println("Posisi awal servo " + String(pos));
servo.write(pos);
Serial.println("Tekan tombol + atau -");
}
void loop()
{
// Checks received an IR signal
if (receiver.decode() && pos > 0 && pos < 180) {
translateIR();
Serial.println("Posisi " + String(pos) + " derajat");
servo.write(pos);
receiver.resume(); // Receive the next value
}
else if (receiver.decode() && pos >= 180){
Serial.println("Posisi maksimal, tekan tombol - atau back");
translateIR();
receiver.resume();
}
else if (receiver.decode() && pos <= 0){
Serial.println("Posisi maksimal, tekan tombol + atau back");
translateIR();
receiver.resume();
}
}
void translateIR()
{
// Takes command based on IR code received
switch (receiver.decodedIRData.command) {
case 2:
pos += 1;
break;
case 152:
pos -= 1;
break;
case 194:
pos = 90;
break;
default:
Serial.println("Invalid!! Tekan + atau -");
}
}