Stap 4: Upload programma
Ik oorspronkelijk instellen voor 5 PIRs maar één van de kabelbomen was slecht dus eerder dan het scheuren en eraan ging ik met slechts 4 PIRs.
Het programma doet twee andere dingen. Als het een PIR is hoog en de servo is reeds op dat PIRs overeenkomt positie, niet verplaatsen.
Ook gebruik ik een andere array te volgen als de PIR is gebruikt sinds het ging hoog. Ik laat alleen het eenmaal worden gebruikt voor elke hoge staat. Als u dat niet doet krijg je verkeer tussen aangrenzende PIRs thats niet nodig toegevoegd.
Ik weer gewoon op de LED wanneer een PIR hoog, is dus ik vertellen kan door te kijken naar de Arduino als er wat activiteit in de PIRs.
#include < Servo.h >
Auteur: jim demello feb 2014 / /
Booleaanse pirStatus;
Servo servo1;
int servangle = 0; Servo hoek variabele
int pirNo [] = {3,4,5,6,7}; PIR pincodes
int pirPrevLow [] = {1,1,1,1,1}; eerder lage vlag is ingesteld op true
int pirPrevUsed [] = {0,0,0,0,0}; pir is op gebruikt voordat u gaat laag
int pirPos [] = {10,60,100,140,170}; posities voor servo (0-180)
int curPosPir = 0;
int pirPin = 3;
int ledPin = 13;
VOID Setup {}
Serial.begin(9600);
servo1.attach(9);
for (int i = 0; ik < 4; i ++) {}
pinMode (pirNo [i], INPUT);
}
pinMode (ledPin, OUTPUT);
delay(10000); kalibreren voor ongeveer 10 seconden
servo1.write(90); servo op center om te beginnen zetten
}
////////////////////////////
HOOFDLUS
//////////////////
void loop {}
for (int j = 0; j < 4; j ++) {/ / voor elke PIR
pirPin = pirNo [j];
pirStatus = digitalRead(pirPin);
Als (pirStatus == HIGH) {}
digitalWrite (ledPin, hoge); de led visualiseert de sensoren uitvoer pin staat
if(pirPrevLow[j]) {}
Als (curPosPir! = pirPin & & pirPrevUsed [j] == 0) {/ / als hoge PIR anders is dan de huidige positie PIR dan verplaatsen naar de nieuwe positie
servo1.write(pirPos[j]);
Serial.println(j);
delay(50);
curPosPir = pirPin; houden van de huidige PIR
pirPrevUsed [j] = 1;
}
pirPrevLow [j] = 0; PIR is nu niet laag
}
}
else {}
digitalWrite (ledPin, laag); de led visualiseert de sensoren uitvoer pin staat
pirPrevLow [j] = 1; PIR is nu laag
pirPrevUsed [j] = 0;
}
} / / end j pirs lus aantal
} / / einde van de oneindige lus