« Item:Détecteur de Mouvement HC-SR501 » : différence entre les versions

Antonydbzh (discussion | contributions)
Aucun résumé des modifications
Antonydbzh (discussion | contributions)
Aucun résumé des modifications
 
Ligne 19 : Ligne 19 :
Pour utiliser le détecteur de mouvement il n'y a besoin d'aucunes bibliothèques car le capteur ne renvoie que deux état :
Pour utiliser le détecteur de mouvement il n'y a besoin d'aucunes bibliothèques car le capteur ne renvoie que deux état :


* soit l'état haut (HIGH) lorsqu'il capte un mouvement.
*soit l'état haut (HIGH) lorsqu'il capte un mouvement.
* Soit l'état bas (LOW) lorsqu'il ne capte rien .
*Soit l'état bas (LOW) lorsqu'il ne capte rien .


Attention, la détection peut prendre du temps car il y a une temporisation (le capteur à besoin de chauffer d'une part et lorsqu'il capte un mouvement, il reste un certain temps en état haut d'autre part.).
Attention, la détection peut prendre du temps car il y a une temporisation (le capteur à besoin de chauffer d'une part et lorsqu'il capte un mouvement, il reste un certain temps en état haut d'autre part.).
Ligne 55 : Ligne 55 :
=Exemple : =
=Exemple : =
<syntaxhighlight lang="arduino" line="1" start="1">
<syntaxhighlight lang="arduino" line="1" start="1">
#define pirPin 2
#define brocheCapteur 2
int val = LOW;  
int val = LOW;  
bool motionState = false;
bool etatDetection = false;


void setup() {
void setup() {
   Serial.begin(9600);
   Serial.begin(9600);
   pinMode(pirPin, INPUT);
   pinMode(brocheCapteur, INPUT);
}
}


void loop() {
void loop() {
   val = digitalRead(pirPin);
// la variable etatDetection sert à éviter de "trop boucler".
// cela permet de ne pas écrire en boucle les infos dans le moniteur série.
// et au contraire de n'écrire que lorsqu'il y a un changement d'état de "détecté" à "non détecté"
   val = digitalRead(brocheCapteur);
   if (val == HIGH) {
   if (val == HIGH) {
     if (motionState == false) {
     if (etatDetection == false) {
       Serial.println("Mouvement détecté !");
       Serial.println("Mouvement détecté !");
       motionState = true;
       etatDetection = true;
     }
     }
   } else if (val == LOW) {
   } else if (val == LOW) {
     if (motionState == true) {
     if (etatDetection == true) {
       Serial.println("Mouvement non détecté !");
       Serial.println("Mouvement non détecté !");
       motionState = false;  
       etatDetection = false;  
     }
     }
   }
   }

Dernière version du 10 mai 2023 à 10:21


Détecteur de Mouvement HC-SR501

Détecteur de mouvement PIR (Passive Infra Red)

0.72EUR (€)


Description longue

Il doit être alimenté en 5V

plus d'infos sur la notice du composant.


Caractéristiques


  • alimentation maxi : 5V

Bibliothèque :

Pour utiliser le détecteur de mouvement il n'y a besoin d'aucunes bibliothèques car le capteur ne renvoie que deux état :

  • soit l'état haut (HIGH) lorsqu'il capte un mouvement.
  • Soit l'état bas (LOW) lorsqu'il ne capte rien .

Attention, la détection peut prendre du temps car il y a une temporisation (le capteur à besoin de chauffer d'une part et lorsqu'il capte un mouvement, il reste un certain temps en état haut d'autre part.).

Câblage :

Item Motion Sensor HC-SR501

Le code minimal :

Motion Sensor HC SR-501
Avant le Setup Importation de la bibliothèque Aucunes bibliothèques
Création de l’objet #define pirPin <numéro de broche>; // je défini la broche

int val = LOW;

bool motionState = false;

Dans le Setup Démarrage de l’objet pinMode(pirPin, INPUT);
Dans le Loop Utilisation val = digitalRead(pirPin);

if (motionState == false)

Autres fonctionnalités

Aucune autres fonctionnalités

Exemple :

#define brocheCapteur 2
int val = LOW; 
bool etatDetection = false;

void setup() {
  Serial.begin(9600);
  pinMode(brocheCapteur, INPUT);
}

void loop() {
// la variable etatDetection sert à éviter de "trop boucler".
// cela permet de ne pas écrire en boucle les infos dans le moniteur série.
// et au contraire de n'écrire que lorsqu'il y a un changement d'état de "détecté" à "non détecté"
  val = digitalRead(brocheCapteur);
  if (val == HIGH) {
    if (etatDetection == false) {
      Serial.println("Mouvement détecté !");
      etatDetection = true;
    }
  } else if (val == LOW) {
    if (etatDetection == true) {
      Serial.println("Mouvement non détecté !");
      etatDetection = false; 
    }
  }
}

Pages liées

Commentaires

Published