C’est un capteur complexe, ce qui signifie qu’il embarque une éléctronique propre, complexe, ce qui lui permet d’envoyer une information simple alors qu’en fait il traite une information complexe, des filtres de parasitage, un timer, une mémoire.
Le montage est donc un montage classique à 3 fils : une alimentation en 5 volts venant d’Arduino, une pin sur une entrée digitale et un fil vers le ground. Se reporter à la documentation du senseur pour connaitre la correspondance entre les fils et leurs fonctions. Voici un schéma classique.
La pin utilisée pour l’input de l’information recevra une information HIGH si il n’y a pas de présence détectée et LOW si quelque chose est dans le champ.
Le code ci-dessous est commenté. La réception de l’information (sur la pin 2 dans ce code) est simple, le reste est là pour détecter si quelqu’un vient d’entrer dans le champ vide, si quelqu’un est toujours là , un système de timer permet d’attendre un peu pour éviter un passage trop rapide de HIGH à LOW. Une temporisation qui peut être réglée avec la variable pir_delay et le delay entre chaque test.
// Utiliser un PIR
// placé sur la pin 2
int pirPin=2; // la pin sur laquelle est placé le PIR
int pir_delay=12; // 3 secondes sans mouvement = fini
int decompte=-1; // on signale qu'il n'y a personne
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
}
void loop(){
int pirVal = digitalRead(pirPin);
if(pirVal == LOW){
// quelque chose dans le champ
if(decompte== -1){
// si la valeur est -1, c'est une entree
Serial.println("quelque chose est dans le champ");
}
// tant qu'il y a quelque chose, on remet le compteur au max
decompte=pir_delay;
}
else if(pirVal == HIGH && decompte > 0){
// plus personne, on commence à décompter
decompte--;
Serial.print("plus personne - decompte : ");
Serial.println(decompte);
}
if(decompte==0 ){
// le temps d'attente est écoulé
decompte=-1; // spécifier la sortie de champ
Serial.println("plus rien dans le champ");
}
// un test tout les quart de seconde
delay(250);
}