const int stepPin = 6;
const int dirPin = 5;
const int enablePin = 8;
const int buttonPin = 12;
bool lastButtonState = HIGH;
bool motorRunning = false;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // aktiviramo interni pull-up otpornik
digitalWrite(enablePin, LOW); // Omogući drajver (LOW = aktivno)
digitalWrite(dirPin, HIGH); // Smer kazaljke na satu
}
void loop() {
bool currentButtonState = digitalRead(buttonPin);
// Detekcija pritiska dugmeta
if (lastButtonState == HIGH && currentButtonState == LOW) {
motorRunning = true;
}
lastButtonState = currentButtonState;
if (motorRunning) {
rotateStepper(22); // 22 kruga
motorRunning = false; // Čekaj sledeći pritisak
}
}
void rotateStepper(int rotations) {
const int stepsPerRevolution = 200; // 1.8° stepper motor
const int totalSteps = rotations * stepsPerRevolution;
const int delayMicros = 1666; // 3 kruga/s = 600 koraka/s
for (int i = 0; i < totalSteps; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(delayMicros / 2);
digitalWrite(stepPin, LOW);
delayMicroseconds(delayMicros / 2);
}
}