3.5 $ P.I.R. Arduino inbrotts larm (4 / 4 steg)
Steg 4: Kodning tid
Om koden.
int calibrationTime = 45;
tiden när sensorn utgångar en låga impuls
länge osignerade int lowIn;
mängden millisekunder sensorn har låg
innan vi antar all rörelse har slutat
länge osignerade int paus = 5000;
booleska lockLow = sant;
booleska takeLowTime;
int pirPin = 3; den digital pin ansluten till PIR-sensorns utgång
int ledPin = 11;
int led1 = 8.
int led2 = 7.
/////////////////////////////
SETUP
void setup() {
Serial.BEGIN(9600);
pinMode (pirPin, ingång);
pinMode (ledPin, produktionen);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
digitalWrite (pirPin, låg);
ge sensorn lite tid att kalibrera
Serial.Print ("kalibrera sensorn");
för (int jag = 0; jag < calibrationTime; i ++) {
Serial.Print(".");
Delay(1000);
}
Serial.println ("gjort");
Serial.println ("sensorn aktiv");
Delay(50);
}
void alert()
{
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
Delay(50);
digitalWrite(led2,HIGH);digitalWrite(led1,LOW);
Delay(50);
}
void loop() {
IF(digitalRead(pirPin) == hög) {
analogWrite (ledPin, 50);
Alert();
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
; //the ledde visualiserar sensorer utdata pin staten
IF(lockLow) {
ser till att vi väntar på en övergång till låg innan någon ytterligare utgång görs:
lockLow = false;
Serial.println("---");
Serial.Print ("rörelse upptäckts på");
Serial.Print(Millis()/1000);
Serial.println ("sec");
Delay(50);
}
takeLowTime = sant;
}
IF(digitalRead(pirPin) == låg) {
digitalWrite (ledPin, låg); den ledde visualiserar sensorer utdata pin staten
IF(takeLowTime) {
lowIn = millis(); Spara tiden för övergången från hög till låg
takeLowTime = false; se till att detta görs endast i början av en låg fas
}
om sensorn är låg för mer än den givna pausen,
Vi antar att ingen mer motion som kommer att hända
om (! lockLow & & millis() - lowIn > pausa) {
gör säkert detta kodblock endast körs igen efter
ett nytt förslag sekvens har upptäckts
lockLow = sant;
Serial.Print ("motion slutade på"); utgång
Serial.Print((Millis() - paus) / 1000);
Serial.println ("sec");
Delay(50);
}
}
}