//***************************************************************// // // // Het programmeren van een PIR sensor // // // // Onderdeel van de module Physical Computing // // Ontworpen voor het vak informatica // // 2017-2018 // // // // Schakelt de ingebouwde led op de Arduino aan als er een // // persoon gedetecteerd wordt en schakelt deze weer uit nadat // // er gedurende 10 seconden niemand meer gedetecteerd is. // // // //***************************************************************// // ******************************************************** // Pin toewijzing // ******************************************************** // Het ledje op de Arduino const int ledPin = 13; // De aansluiting van de PIR sensor const int pirPin = 2; // ******************************************************** // Variabelen // ******************************************************** // De variabele pirToestand geeft aan of er beweging gedetecteerd is. // Is de waarde 0 dan is er geen beweging gedetecteerd. // Is de waarde 1 dan is er wel beweging gedetecteerd. int pirToestand = 0 ; // In het toestandsdiagram zien we 2 toestanden: // // 1 Het ledje is uit // 2 Het ledje is aan // // We beginnen bij toestand 1 int toestand = 1; // De eindTimer wordt gebruikt om de eindtijd // van de timer in bij te houden unsigned long eindTimer = 0; // interval is de variabele waarin we aan kunnen geven // hoelang (in milliseconden) de led moet branden. // hoewel we het ledje 10 seconden willen laten branden // nemen we hier als intervaltijd 7,5 seconden omdat de // sensor zelf in zijn laagste stand na 2,5 seconde // na het niet meer detecteren een LOW geeft op de pirPin const long interval = 7500; // ******************************************************** // De setup // ******************************************************** void setup() { // Initialiseert de pirPin als een input. // Daarmee geven we aan dat de pirPin (pin 2) gebruikt // wordt om een signaal aan de computer door te geven. pinMode(pirPin, INPUT); // Initialiseert de ledPin als een output. // Daarmee geven we aan dat de ledPin (pin 13) gebruikt // wordt om een signaal vanuit de computer aan // een ander onderdeel door te geven pinMode(ledPin, OUTPUT); } // ******************************************************** // De loop // ******************************************************** void loop() { // Lees de waarde die de PIR sensor afgeeft: pirToestand = digitalRead(pirPin); if (toestand == 1) { if (pirToestand == 1) { // start nu de timer eindTimer = millis() + interval; // verander de toestand toestand = 2; // en zet het ledje aan digitalWrite(ledPin, 1); } } if (toestand == 2) { if (pirToestand == 1) { // herstart de timer eindTimer = millis() + interval; } else { if (millis() >= eindTimer) { // verander de toestand toestand = 1; // en zet de lamp uit digitalWrite(ledPin, 0); } } } }