Его задача - Включаться каждый день в 7 утра и в 9 вечера, (один день в в воскресение что бы не включался!), сделать 5 полных оборотов за одну минуту в 7 утра, отключиться, и сделать это же самое в 9 вечера
Вот с этим с этим кодом шаговик делает только пол оборота туда и обратно без каких либо задержек во времени
#include
// изменить количество шагов для вашего мотора
#define STEPS 4078
// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper_28BYJ stepper(STEPS, 2, 3, 4, 5);
// установим скорость вращения 5 об/мин
stepper.setSpeed(5);
}
void loop()
{
pinMode(STEPS, HIGH);
sleep_enable();
Timer1.initialize(7000000); // 7 Секунд
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
stepper.step(4000); // Делаем 4000 шагов в одну строну
// Main code loop
// TODO: Put your regular (non-ISR) logic here
pinMode(STEPS, LOW );
sleep_mode();
Timer1.initialize(7000000); // 7 Секунд
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
stepper.step(-4000);// Делаем 4000 шагов в другую строну
ну а с чего Вы рассчитываете на задержку?
Timer1.initialize(7000000); // 7 Секунд
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
это означает, что по истечении 7 секунд будет вызвана функция timerIsr - в которой у Вас пусто.
сперва срабатывает setup - и крутит мотор в одну сторону. Потом запускается loop - и крутит в другую. все. что напрограммировали - то и получили.