Ik zit de laatste weken met een probleempje. Ik ben aan het proberen om een programma te schrijven voor het flikkeren van twee ledjes voor een bepaalde tijd bij het inkomen van een signaal. Het signaal moet een sensor voorstellen die beweging detecteerd. Ik heb al een beetje een idee hoe ik hier aan moet beginnen, maar het probleem is dat ik niet vind hoe je een programma zich blijft herhalen totdat er bevoorbeeld 10 seconde voorbij zijn en dan moet hij stoppen met het programma te herhalen en direct resetten.
The function millis() is used for that.
Start with the example : Blink Without Delay
The millis() function can be used for doing timed tasks while the sketch can do other things. It can be used together with a state machine, or to do something every minute as a background task. It is very versitile, but you have to get used to programming with millis().
Without using millis(), you could try a for-loop of ten times. Your loop() function takes now a second, so if you do that 10 times, you have about 10 seconds.
for ( int i=0; i<10; i++)
{
// led on
// delay
// led off
// delay
}
Belangrijk detail hierbij is dat je dan dus alles op die manier moet gaan doen.
Dus werkelijk ALLE delay() eruit gooien, anders gaat je programma helemaal uit de pas lopen.
Delay() is leuk voor een proof of concept of wanneer je buiten void.loop een vertraging nodig hebt.
Anders is bijna altijd wel de blink without delay methode te prefereren.