Comme c'est souvent le cas, le produit n'était accompagné d'aucune documentation, mais son utilisation est simple puisqu'il est doté de 3 broches clairement identifiées: deux pour l'alimentation (5 V et GND) et une sortie qui prend pendant quelques secondes l'état logique "haut" si un mouvement est détecté a proximité du capteur.

Ensuite, j'ai eu envie de créer quelque chose d'un peu plus sophistiqué en mettant à contribution mon fidèle Arduino: il s'agit d'un petit montage qui, lorsqu'il détecte votre arrivée dans une pièce, joue une petite mélodie de bienvenue. Pour éviter que la mélodie ne soit déclenchée chaque fois que vous bougez, un délai minimal est imposé entre deux mélodies consécutives (il n'est que de 30 secondes dans le sketch ci-dessous, mais il est facile de l'augmenter à une heure, ou même plus, pour que l'Arduino vous salue uniquement lorsque vous revenez suite à une longue absence).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Ce sketch permet de jouer une mélodie lorsqu'un mouvement | |
est détecté par un capteur à infrarouge (PIR). | |
Pour plus d'informations: | |
https://electroniqueamateur.blogspot.com/2012/02/detecteur-de-mouvements-infrarouge.html | |
*/ | |
#define HautParleur 8 // haut-parleur branché sortie 8 | |
#define Infrarouge 2 // capteur infrarouge branché sortie 2 | |
unsigned long precedent=millis(); // quand la mélodie a été jouée la dernière fois | |
unsigned long delai = 30000; //délai d'attente avant de jouer à nouveau la mélodie. | |
void setup() { | |
pinMode(HautParleur, OUTPUT); | |
pinMode(Infrarouge, INPUT); | |
} | |
void loop() { | |
if ((millis()-precedent)> delai) { | |
if (digitalRead(Infrarouge)){ | |
melodie(); | |
precedent=millis(); | |
} | |
} | |
} | |
void melodie() { | |
// rencontre du troisième type | |
tone(HautParleur, 440,600); // la | |
delay(620); | |
tone(HautParleur, 494,600); // si | |
delay(620); | |
tone(HautParleur, 392,600); // sol | |
delay(620); | |
tone(HautParleur, 196,600); // sol | |
delay(620); | |
tone(HautParleur, 294,1200); // ré | |
delay(1220); | |
noTone(8); | |
} |
Yves Pelletier (Twitter, Facebook)