// https://wokwi.com/projects/382230750316407809
// nota: el motor paso a paso del simulador es bipolar!!
const int motor_A = 23;
const int motor_B = 22;
const int motor_C = 19;
const int motor_D = 18;
const int motor[6]={motor_D,motor_A ,motor_B,motor_C,motor_D,motor_A };
hw_timer_t*timer2 = NULL;
void fintimer2()
{
for(int i=1;i<5;i++)
{
digitalWrite(motor[i-1],LOW);
digitalWrite(motor[i],HIGH); //Hay que poner el LOW, si no, se quedaría todo el rato en HIGH
digitalWrite(motor[i+1],HIGH);
}
}
void setup()
{
// pines de salida del motor
pinMode(motor_A, OUTPUT);
pinMode(motor_B, OUTPUT);
pinMode(motor_C, OUTPUT);
pinMode(motor_D, OUTPUT);
timer2 = timerBegin(10e5); //Configuramos la frecuencia a 1 millón
timerAttachInterrupt(timer2, &fintimer2);
timerAlarm(timer2,20000, true, 0);
// initialize the serial port
Serial.begin(115200);
}
void loop()
{
delay(10); // retardo en dar el siguiente paso -> no bajar de 2 ms (da una vuelta en T * 32 pasos * 64 engranaje)
}