Hey guys,
I really don’t know if you have already covered this subject. I’m relatively new to Arduino world and really liked the idea of controlling the Arduino over a WiFi connection. As far as I know, using delay function in Arduino sketch will yield all kind of bugs as it blocks the communication between Blynk app and the Arduino it’s self. Yet, I need to have some sequential delay between certain actions.
I’m using a button from the Blynk app attached to D8 and another physical one attached to D3 to trigger D4, D5 & D6 with a delay of 2 sec. between D4 &D5 and 6 sec. between D5 & D6. I did try using the Blink LED without Delay sketch as a template to resolve the issue but with no success. What I’m getting is random delay timing.
Any suggestions? Your support is highly appreciated!
Hello, you could use SimpleTimer library. Example here.
Or you could use custom code. Something like that (pseudo code, just idea) :
if (digitalRead(D3)) {
pressMoment = millis();
}
if (pressMoment + DELAY_MILLIS < millis()) {
//do whatever you need
pressMoment = MAX_VALUE;
}
Thanks for your quick response Mr. Dmitriy! But I didn’t get the point of the pseudo code you provided. It seems to me the statement
if (pressMoment + DELAY_MILLIS < millis()) is always true!? I know I’m missing something. I’m assuming DELAY_MILLIS is the desired delaying time. But what do you mean by MAX_VALUE?
Thanks in advance!
I’ll explain with words.
When you press/click D3 button. You remember press time in variable ‘pressMoment’. Than - you have a desired delay - ‘DELAY_MILLIS’. You have a main loop that executes your code every time. So you add if statement - “does desired delay is already happen?”. If answer is - yes you go inside do some job ans set ‘pressMoment’ variable value to some huge value so this if statement will never executed again until you press D3 again.
I got it Thank you very much Sr. for your quick response again!