помогите разобраться с простой задачей.
Вот скетч под размыкание замыкание цепи включения моторчкика через релешку при нажатии кнопки.
#define button_pin 3 // пин кнопки
#define relay_pin 6 // пин реле
boolean butt_flag = 0; // флажок нажатия кнопки
boolean butt; // переменная, хранящая состояние кнопки
boolean flag = 0; // флажок режима
//const int mtime = 120000;
unsigned long last_press; // таймер для фильтра дребезга
unsigned long my_timer;
unsigned long my_timer2;
void setup() {
pinMode(button_pin, INPUT_PULLUP); // кнопка подтянута внутренним резистором
pinMode(relay_pin, OUTPUT); // пин реле как выход
}
void loop() {
butt = !digitalRead(button_pin); // считать текущее положение кноопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 100) { // если кнопка нажата, до этого была бы отпущена
butt_flag = 1; // запоминаем, что нажали кнопку
flag = !flag; // инвертируем флажок
last_press = millis(); // запоминаем время
digitalWrite(relay_pin, flag); // подаем сигнал на пин реле
}
if (butt == 0 && butt_flag == 1) { // если кнопка отпущена, и до этого была нажата
butt_flag = 0; // запоминаем, что отпустили кнопку
my_timer = millis(); // таймер
}
if (butt == 1 && butt_flag == 0 && millis() - my_timer == 120000 ) {
butt_flag = 1; // запоминаем статус нажатия
flag = !flag; // инвертируем флажок
digitalWrite(relay_pin, flag); // подаем сигнал на пин реле
my_timer2 = millis();
}
if (butt == 0 && butt_flag == 1 && millis() - my_timer2 == 120000 ) {
butt_flag = 0; // запоминаем статус нажатия
flag = !flag; // инвертируем флажок
my_timer = millis();
digitalWrite(relay_pin, flag); // подаем сигнал на пин реле
}
}
Как мне заставить замыкат\размыкать релешку постоянно через каждые 2 минуты, и где ошибка в логике?
Старт начинаеться разумеется после нажатия кнопки. и потом в цикле через 2 минуты замыкание\размыкание.