Чайнику от чайника :))) так что учти опыта нету :)))
пару дней назад впервые сделал нечто подобное только на серво моторе.
Вот скетч упрощенный.
#include <Servo.h>
Servo servol;
unsigned long previousMillis = 0;
void setup(){
servol.attach(9); // на 9 пине серво мотор
pinMode(13, OUTPUT);
servol.write(94); // команда успокоить серву (серва постоянного вращения)
}
void loop(){
while ((millis() / 60000 < analogRead(0) / 17) || (millis() / 60000 < previousMillis + analogRead(0) / 17)) { // собственно таймер от 0мин до 60мин, если чуток подумать и
// делить не на 60000 а эээээ-ээ..... сейчас millis() / 60000 это 1мин 2 мин 3мин ... вобщем раз в минуту появляется значение....можно сделать и реже 1час 2 час итд.
// здесь делай опрос кнопок и действие шаговика нное количество раз если надо
digitalWrite(13,HIGH); // включается светодиод для контроля
}
previousMillis = millis() / 60000;
// здесь команду на работу шаговика или сервы. раз в сутки (ну или как получится)
servol.write(180); // это моя серва крутится против часовой 5,5 секунд (где-то 5,5оборотов)
delay(5500);
servol.write(94); // серва стоп
while (millis() / 60000 < previousMillis + analogRead(1) / 17){ // еще один интервал 0-60мин
// здесь делай опрос кнопок и действие нное количество раз если надо (или ставь одну мин и не делай ничего)
digitalWrite(13,LOW); //гасится светодиод для контроля
}
// здесь команду на работу шаговика или сервы. раз в сутки или типа того (так для примера)
previousMillis = millis() / 60000;
servol.write(0); // серва крутится по часовой 6,5сек
delay(6500);
servol.write(94); // стоп серва
}
ну и на последок analogRead(1) это переменный резистор 50ком на 1-м аналоговом пине (задает интервал)
analogRead(1 или 0) / 17 можно заменить целым числом и таймер будет фиксированным.
Вообщем разбирайся потихоньку... дело это хлопотное блин...
А по шаговикам, мне блин и самому интересно как их запускать то :))))