//pin yang digunakan untuk mengontrol stepper
const int dirPin = 5; // pin untuk kontrol arah
const int stePin = 6; // pin untuk kontrol langkah
const int startButtonPin = 3; // pin untuk tombol start
const int stopButtonPin = 4; // pin untuk tombol stop
int startButtonState = 0; // status tombol start saat ini
int stopButtonState = 0; // status tombol stop saat ini
int lastStartButtonState = 0; // status tombol start sebelumnya
int lastStopButtonState = 0; // status tombol stop sebelumnya
bool motorRunning = false; // status motor (berjalan atau berhenti)
void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stePin, OUTPUT);
pinMode(startButtonPin, INPUT_PULLUP);
pinMode(stopButtonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// Membaca status tombol
startButtonState = digitalRead(startButtonPin);
stopButtonState = digitalRead(stopButtonPin);
// Jika tombol start ditekan (HIGH ke LOW)
if (startButtonState == LOW && lastStartButtonState == HIGH) {
delay(50); // debounce
motorRunning = true;
Serial.println("Motor Started");
}
// Jika tombol stop ditekan (HIGH ke LOW)
if (stopButtonState == LOW && lastStopButtonState == HIGH) {
delay(50); // debounce
motorRunning = false;
Serial.println("Motor Stopped");
}
// Simpan status tombol sebelumnya
lastStartButtonState = startButtonState;
lastStopButtonState = stopButtonState;
// Jalankan motor jika status aktif
if (motorRunning) {
digitalWrite(dirPin, HIGH); // arah motor
stepMotor();
} else {
digitalWrite(stePin, LOW); // matikan stepper
}
}
void stepMotor() {
digitalWrite(stePin, HIGH);
delayMicroseconds(1000);
digitalWrite(stePin, LOW);
delayMicroseconds(1000);
}