int step = 5;
int dir = 4;
int largimpul = 20; //larghezza dell impulso in micros
int distimpul = 10;// distanza tra gli impulsi in millis piu si aumenta questo par e minore è la velocita
volatile int start_stepper = 0; //avvia e stoppa il motore
volatile int direction_stepper = 0;// cambia la direzione
void setup() {
pinMode(step, OUTPUT);
pinMode(dir, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2),Start, FALLING);
attachInterrupt(digitalPinToInterrupt(3),Direction, FALLING);
// Attach interrupt to the button pin, call Startstepper on FALLING edge
}
void loop() {
while(start_stepper){
digitalWrite(dir,direction_stepper);
digitalWrite(step, HIGH);
delayMicroseconds(largimpul);
digitalWrite(step, LOW);
delay(distimpul);
}
}
void Start() {
start_stepper=!start_stepper;
}
void Direction() {
direction_stepper=!direction_stepper;
}