Да, недоделал.)) Нужна ещё одна проверка. Но это не лучше, чем у Alexey_Rem , просто как вариант. Избавиться от глобального флага не удалось. Надо будет ещё позаниматься.
Не совсем понял, зачем в 1-ом посте второй раз пишем инструкции до задержки (стр.17).
Ещё ,как вариант, делить функцию с задержкой на две функции и вызывать их по таймеру из loop().
bool funct_del_flag = false;
unsigned long d_time = 0;
void setup() {
Serial.begin(9600);
delay(300);
}
void funct()
{
if (!funct_del_flag) {
Serial.println("ON");
//...инструкции до задержки
funct_del_flag = true;
}
if (funct_del_flag) {
if ((millis() - d_time) >= 1000) {
d_time = millis();
funct_del_flag = false;
Serial.println("OFF");
//...инструкции после задержки
}
else {
return;
}
}
}
void loop() {
// ...
funct();
// ...
}
P.S. Ну я и тупорез))!!! Глянул на свежую голову - в таком варианте и return не нужен)))
bool funct_del_flag = false;
unsigned long d_time = 0;
void setup() {
Serial.begin(9600);
delay(300);
}
void funct()
{
if (!funct_del_flag) {
Serial.println("ON");
//...инструкции до задержки
funct_del_flag = true;
}
if (funct_del_flag) {
if ((millis() - d_time) >= 1000) {
d_time = millis();
funct_del_flag = false;
Serial.println("OFF");
//...инструкции после задержки
}
}
}
void loop() {
// ...
funct();
// ...
}