#include <ESP32Servo.h>
#include <IRremote.hpp>
#define IR_RECEIVE_PIN 15
#define SERVO_PIN 18
Servo myServo;
int sudutSekarang = 90; // Mulai dari posisi tengah
void setup() {
Serial.begin(115200);
// Inisialisasi servo
ESP32PWM::allocateTimer(0);
myServo.setPeriodHertz(50);
myServo.attach(SERVO_PIN);
myServo.write(sudutSekarang);
// Mulai penerima IR
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
Serial.println("ESP32 Servo Control dengan IR Remote siap");
}
void loop() {
if (IrReceiver.decode()) {
Serial.printf("Kode IR diterima: 0x%08X\n", IrReceiver.decodedIRData.decodedRawData);
switch(IrReceiver.decodedIRData.decodedRawData) {
case 0xFD02FF00: // Tombol "+"
sudutSekarang = min(sudutSekarang + 1, 180);
break;
case 0x6798FF00: // Tombol "-"
sudutSekarang = max(sudutSekarang - 1, 0);
break;
default:
// Kode lain, abaikan
break;
}
myServo.write(sudutSekarang);
Serial.printf("Sudut servo sekarang: %d\n", sudutSekarang);
IrReceiver.resume();
}
delay(50); // Sedikit delay untuk stabilitas
}