Stap 8: Sluit de PIR bewegingsmelder
PIR bewegingsmelder is een apparaat dat motie van een mens tot een bereik van 6 m kunt ontdekken. PIR staat voor passief infrarood. Het werkt volgens het principe dat ieder mens een straling van bepaalde golflengte uitzendt. De sensor detecteert de straling en geeft een hoge output wanneer een beweging wordt gedetecteerd. Dus hier wanneer u zal uw hand voor het Golf, zal de uitlaat krijgen ingeschakeld. Het wordt ook gebruikt in de modus van de beveiliging op te detecteren van beweging in de nacht. De sensor volgens de tekst die hieronder wordt gegeven om te controleren uw sensor, uploaden van de code hieronder je arduino aansluiten.
- VCC---Arduino 5v
- GND---Arduino gnd
- Vout---Arduino analoge pin 1
int calibrationTime = 30; long unsigned int lowIn; long unsigned int pause = 5000; boolean lockLow = true; boolean takeLowTime; int pirPin = A1; int ledPin = 13; void setup() { Serial.begin(9600); pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(pirPin, LOW); Serial.print("calibrating sensor "); for(int i = 0; i < calibrationTime; i++){ Serial.print("."); delay(1000); } Serial.println(" done"); Serial.println("SENSOR ACTIVE"); delay(50); } void loop() { if(digitalRead(pirPin) == HIGH) { digitalWrite(ledPin, HIGH); if(lockLow) { //makes sure we wait for a transition to LOW before any further output is made: lockLow = false; Serial.println("---"); Serial.print("motion detected at "); Serial.print(millis()/1000); Serial.println(" sec"); delay(50); } takeLowTime = true; }</p><p> if(digitalRead(pirPin) == LOW){ digitalWrite(ledPin, LOW); //the led visualizes the sensors output pin state</p><p> if(takeLowTime){ lowIn = millis(); //save the time of the transition from high to LOW takeLowTime = false; //make sure this is only done at the start of a LOW phase } //if the sensor is low for more than the given pause, //we assume that no more motion is going to happen if(!lockLow && millis() - lowIn > pause){ //makes sure this block of code is only executed again after //a new motion sequence has been detected lockLow = true; Serial.print("motion ended at "); //output Serial.print((millis() - pause)/1000); Serial.println(" sec"); delay(50); } } }</p>