Étape 4: Programme de téléchargement
J’ai configurer initialement pour 5 détecteurs infrarouge passifs, mais parmi les faisceaux de câblage était mauvais, donc plutôt qu’il déchirer et fixez-le je suis allé avec seulement 4 détecteurs infrarouge passifs.
Le programme fait deux autres choses. Si l’un PIR est élevée et le servo est déjà à cette PESI correspondant de position, il ne bouge.
Aussi, j’utilise un autre tableau à suivre si le PIR a été utilisé depuis sa mise en haut. J’ai seulement laisser être utilisé une fois pour chaque État élevé. Si vous ne faites que vous ajouté mouvement entre le SRRJ adjacent qui n’est pas nécessaire.
Je viens de tourner sur la LED chaque fois qu’un PIR est haute, je peux dire en regardant l’Arduino, s’il y a une certaine activité dans le SRRJ.
#include < Servo.h >
Auteur : jim demello février 2014 / /
Boolean pirStatus ;
Servo servo1 ;
int servangle = 0 ; variable d’angle servo
int pirNo [] = {3,4,5,6,7} ; codes pin PIR
int pirPrevLow [] = {1,1,1,1,1} ; déjà faible indicateur défini à true
int pirPrevUsed [] = {0,0,0,0,0} ; a pir servi de suite avant d’aller en bas
int pirPos [] = {10,60,100,140,170} ; positions pour servo (0-180)
int curPosPir = 0 ;
int pirPin = 3 ;
int ledPin = 13 ;
void setup() {}
Serial.Begin(9600) ;
SERVO1.Attach(9) ;
pour (int i = 0; i < 4; i ++) {}
pinMode (pirNo [i], entrée) ;
}
pinMode (ledPin, sortie) ;
Delay(10000) ; étalonner pendant environ 10 secondes
SERVO1.Write(90) ; mettre le servo au Centre pour commencer
}
////////////////////////////
BOUCLE principale
//////////////////
void loop() {}
pour (int j = 0; j < 4; j ++) {/ / pour chaque PIR
pirPin = pirNo [j] ;
pirStatus = digitalRead(pirPin) ;
Si (pirStatus == HIGH) {}
digitalWrite (ledPin, HIGH) ; le voyant lumineux visualise l’état de broche de sortie de capteurs
{if(pirPrevLow[j])}
Si (curPosPir! = pirPin & & pirPrevUsed [j] == 0) {/ / si haute PIR est différent que l’actuelle position PIR puis passer à la nouvelle position
SERVO1.Write(pirPos[j]) ;
Serial.println(j) ;
Delay(50) ;
curPosPir = pirPin ; garder l’actuel PIR
pirPrevUsed [j] = 1 ;
}
pirPrevLow [j] = 0 ; PIR n’est aujourd'hui pas faible
}
}
else {}
digitalWrite (ledPin, basse) ; le voyant lumineux visualise l’état de broche de sortie de capteurs
pirPrevLow [j] = 1 ; PIR est maintenant faible
pirPrevUsed [j] = 0 ;
}
} / / fin j numéro de boucle de détecteurs infrarouge passifs
} / / fin de boucle infinie