Als tijdens een beweging het ledje aangegaan is, mag deze niet meteen, bij het eindigen van de beweging, weer uit gaan. We gaan daarvoor in het programma een timer programmeren. Kortom, we laten de Arduino de seconden tellen.
De minimumtijd van de PIR sensor zelf, gerekend vanaf het moment dat er geen persoon meer wordt gedetecteerd, is ongeveer 2,5 seconde. We laten die voor het gemak echter buiten beschouwing.
Laten we er van uit gaan dat er 10 seconden moeten verstrijken voor het licht uitgaat.
We gebruiken onderstaande toestandsdiagram. Je ziet dat er een timer is toegevoegd.
Aan de aansluiting van de Arduino hoeven we niets te veranderen. We gaan immers het gedrag van het systeem aanpassen door het programma te veranderen.
In het algemene deel van cyclus 2 hebben we laten zien hoe je een timer kunt programmeren. Hier laten we zien hoe je dat voor de Arduino kunt doen.
Ten eerste heb je een variabele nodig:
Stel, je wilt een timer starten voor 10 seconden. Gebruik dan de volgende regel om de timer te starten of te resetten:
De functie millis() geeft het aantal milliseconden dat verstreken is sinds de Arduino is opgestart. Het getal 10000 geeft het aantal milliseconden weer, dat is gelijk aan 10 seconden.
Om te zien of de timer afloopt gebruik je:
Hieronder vind je een uitgewerkt programma voor het bovenstaande toestandsdiagram. Je mag natuurlijk ook zelf een programma schrijven op basis van het toestandsdiagram.