[TUTORIEL] Capteur de présence PIR

Forum dédié aux produits Adafruit

[TUTORIEL] Capteur de présence PIR

Message non lude Laetitia » Mar 11 Sep 2012 11:05

Bonjour,

Voici un petit exemple d'utilisation d'un capteur PIR (Passive InfraRed) : ici un simple détecteur de présence, qui joue une petite mélodie quand quelqu'un ou quelque chose passe à proximité du capteur.
Le capteur PIR est très simple d'utilisation : branchez les pins "5V" et "GND" du capteur à leurs homologues sur votre Arduino, et la pin "OUT" à la pin digitale de votre choix (ici pin 2). Il suffit d'un simple digitalRead() pour récupérer le signal et ainsi déclencher la mélodie !

- MATÉRIEL -

- Arduino Uno (x1)
- Capteur de présence PIR (x1)
- Buzzer (x1)

- SCHÉMA DU MONTAGE -

Schéma_PIR+buzzer.png
Schéma_PIR+buzzer.png (47.59 Kio) Vu 5886 fois


Note : Pour un maximum de précision, il faut laisser au capteur le temps "d'apprendre" son environnement : il faut le brancher et le laisser se calibrer pendant 30 à 60 secondes, avec le minimum de mouvement dans son champ de vision... branchez-le et sortez de la pièce, allez vous resservir un café, ce sera opérationnel à votre retour ;)

- CODE -

Code: Tout sélectionner
/*
Détecteur de présence - capteur PIR + buzzer
Arduino IDE 1.0.1
*/

#define PIR 2
int val = 0;            // état du capteur
int pirState = LOW;     // précédent état du capteur

#include "pitches.h"    // voir http://arduino.cc/en/Tutorial/Tone pour plus de détails sur la génération
                        // de notes avec Arduino

// mélodie
int melody[] = {NOTE_G4, NOTE_B4, NOTE_D5, NOTE_G5, NOTE_B6, NOTE_GS4, NOTE_C5, NOTE_DS5, NOTE_GS5, NOTE_C6, NOTE_AS4, NOTE_D5, NOTE_F5, NOTE_AS5, NOTE_D6};
int noteDurations[] = {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16};

void setup()
{
  pinMode(PIR, INPUT);
}

void loop()
{
  val = digitalRead(PIR);
 
  if(val == HIGH)            // si on détecte un mouvement
  {
    if(pirState == LOW)      // on regarde s'il y a eu changement d'état
    {
      music();               // on joue la musique correspondante
      pirState = HIGH;       // on stocke l'état
    }
  }
  else                       // si on ne détecte pas de mouvement
  {
    if(pirState == HIGH)     // on compare
    {                        // (on ne fait rien)
      pirState = LOW;        // et on stocke l'état
    }
  }
}

void music(void)
{

  for (int thisNote = 0; thisNote < 16; thisNote++)
  {
    // calcul de la durée de la note : 1 seconde/type de note (ex. noire = 1000/4 ; croche = 1000/8...)
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);
   
    // pour avoir des notes distinctes, il faut un minimum de temps entre elles
    // durée de la note + 30% donne des résultats corrects
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
   
    // fin de la mélodie
    noTone(8);
  }
}


pitches.h
Fichier à inclure dans le sketch
(1.95 Kio) Téléchargé 535 fois


- VIDÉO -



Certains d'entre vous reconnaîtront peut-être la mélodie jouée...

J'espère dans tous les cas que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Retourner vers Adafruit

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron