#include <Stepper.h>
// Definisikan parameter stepper
const int numberOfSteps = 3200; // Jumlah langkah untuk satu putaran penuh (misalkan 1 putaran = 3200 langkah)
const int dirPin = 8;
const int stepPin = 9;
const int buttonPin = 10;
const int ms1Pin = 13;
const int ms2Pin = 12;
const int ms3Pin = 11;
// Inisialisasi stepper library
Stepper myStepper(numberOfSteps, stepPin, dirPin);
void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
setMicrostepping(2); // Set microsteps
pinMode(ms1Pin, OUTPUT);
pinMode(ms2Pin, OUTPUT);
pinMode(ms3Pin, OUTPUT);
digitalWrite(ms1Pin, HIGH); // Set MS1
digitalWrite(ms2Pin, HIGH); // Set MS2
digitalWrite(ms3Pin, HIGH); // Set MS3
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
delay(50); // Debounce delay
// Berputar clockwise
digitalWrite(dirPin, HIGH);
for (int n = 0; n < numberOfSteps; n++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(20);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
delay(1000); // Delay satu detik
// Berputar counter-clockwise
digitalWrite(dirPin, LOW);
for (int n = 0; n < numberOfSteps; n++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(20);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
}
}
void setMicrostepping(int microsteps) {
switch (microsteps) {
case 1:
digitalWrite(ms1Pin, LOW);
digitalWrite(ms2Pin, LOW);
digitalWrite(ms3Pin, LOW);
break;
case 2:
digitalWrite(ms1Pin, HIGH);
digitalWrite(ms2Pin, LOW);
digitalWrite(ms3Pin, LOW);
break;
case 4:
digitalWrite(ms1Pin, LOW);
digitalWrite(ms2Pin, HIGH);
digitalWrite(ms3Pin, LOW);
break;
case 8:
digitalWrite(ms1Pin, HIGH);
digitalWrite(ms2Pin, HIGH);
digitalWrite(ms3Pin, LOW);
break;
case 16:
digitalWrite(ms1Pin, HIGH);
digitalWrite(ms2Pin, HIGH);
digitalWrite(ms3Pin, HIGH);
break;
default:
digitalWrite(ms1Pin, LOW);
digitalWrite(ms2Pin, LOW);
digitalWrite(ms3Pin, LOW);
break;
}
}