#include <AccelStepper.h>
#include <IRremote.h>
#define PIN_RECEIVER 13
// Inisialisasi objek receiver untuk menerima sinyal dari remote control
IRrecv receiver(PIN_RECEIVER);
int stepsPerRevolution = 200; // Jumlah langkah per putaran motor stepper
int stepperPosition = 0; // Variabel untuk menyimpan posisi saat ini
// Inisialisasi objek stepper motor dengan jumlah langkah per putaran dan pin-pin yang digunakan
AccelStepper myStepper(AccelStepper::FULL4WIRE, 8, 9, 10, 11);
void setup() {
// Inisialisasi komunikasi serial untuk debugging
Serial.begin(115200);
// Mengaktifkan IR receiver
receiver.enableIRIn();
// Mengatur posisi awal stepper
myStepper.setCurrentPosition(stepperPosition);
}
void loop() {
// Memeriksa apakah ada sinyal IR yang diterima
if (receiver.decode()) {
// Memanggil fungsi untuk menangani sinyal IR
translateIR();
// Mengulangi pengambilan IR data berikutnya
receiver.resume();
}
// Menjalankan motor
myStepper.run();
}
void translateIR() {
// Memeriksa perintah yang diterima dari remote control
switch (receiver.decodedIRData.command) {
// Jika perintah adalah 2
case 2:
Serial.print("Stepper position : ");
// Menambahkan 1 langkah ke posisi stepper
stepperPosition += 1;
// Memastikan posisi tidak melebihi jumlah langkah per putaran
if (stepperPosition >= stepsPerRevolution) {
stepperPosition = stepsPerRevolution - 1;
}
// Menggerakkan stepper ke posisi baru
myStepper.moveTo(stepperPosition);
// Menampilkan posisi baru pada Serial Monitor
Serial.print(stepperPosition);
Serial.println("°");
break;
// Jika perintah adalah 152
case 152:
Serial.print("Stepper position : ");
// Mengurangi 1 langkah dari posisi stepper
stepperPosition -= 1;
// Memastikan posisi tidak kurang dari 0
if (stepperPosition < 0) {
stepperPosition = 0;
}
// Menggerakkan stepper ke posisi baru
myStepper.moveTo(stepperPosition);
// Menampilkan posisi baru pada Serial Monitor
Serial.print(stepperPosition);
Serial.println("°");
break;
// Kasus default: Penanganan perintah yang tidak dikenali
default:
Serial.println("Perintah IR tidak dikenali.");
break;
}
}