// Deklarasi pin untuk stepper motor bipolar
#define Ap 10 // A+ pin
#define Am 11 // A- pin
#define Bp 9 // B+ pin
#define Bm 8 // B- pin
// Jumlah langkah untuk setengah putaran (dengan asumsi 1,8° per langkah motor stepper)
const int stepsPerHalfRevolution = 200 / 2; // 100 langkah untuk setengah lingkaran (motor stepper standar)
void setup() {
// Atur semua pin sebagai output
pinMode(Ap, OUTPUT);
pinMode(Am, OUTPUT);
pinMode(Bp, OUTPUT);
pinMode(Bm, OUTPUT);
}
void loop() {
// Putar motor setengah lingkaran ke arah searah jarum jam (CW)
for (int i = 0; i < stepsPerHalfRevolution; i++) {
stepCW();
}
delay(500); // Jeda singkat sebelum berputar kembali
// Putar motor setengah lingkaran ke arah berlawanan jarum jam (CCW)
for (int i = 0; i < stepsPerHalfRevolution; i++) {
stepCCW();
}
while (true); // Berhenti di posisi awal setelah kembali
}
// Fungsi untuk langkah searah jarum jam (CW)
void stepCW() {
digitalWrite(Am, LOW); digitalWrite(Ap, HIGH); // Langkah 1
delay(10);
digitalWrite(Ap, LOW); digitalWrite(Bp, HIGH); // Langkah 2
delay(10);
digitalWrite(Bp, LOW); digitalWrite(Bm, HIGH); // Langkah 3
delay(10);
digitalWrite(Bm, LOW); digitalWrite(Am, HIGH); // Langkah 4
delay(10);
}
// Fungsi untuk langkah berlawanan jarum jam (CCW)
void stepCCW() {
digitalWrite(Bm, LOW); digitalWrite(Am, HIGH); // Langkah 4
delay(10);
digitalWrite(Am, LOW); digitalWrite(Bp, HIGH); // Langkah 3
delay(10);
digitalWrite(Bp, LOW); digitalWrite(Ap, HIGH); // Langkah 2
delay(10);
digitalWrite(Ap, LOW); digitalWrite(Bm, HIGH); // Langkah 1
delay(10);
}