Détecteur de mouvement PIR simple avec minuterie de capteur & retard léger.
Le circuit utilise un module PIR (environ 1,00 £ sur ebay, un LDR (environ 25p, encore une fois d’ebay et un Arduino mini pro.
Après la réinitialisation, la lumière ambiante est mesurée et, à des fins de test uniquement, le résutat circonstancielle est affiché sur l’écran de série. La sortie est mesurée en permanence jusqu'à ce que le capteur PIR détecte le mouvement.
Lorsque la lumière est inférieur à un niveau prédéterminé, (dans ce cas une valeur de 60 - nom de la variable maintenant-foncé) et un mouvement est détecté, Pin 13, qui sera relié à une ligne de LED va haut et un compteur (timercnt) est décrémenté à chaque seconde. Encore une fois, à des fins de test uniquement, le compteur de décrémentation est affiché sur le moniteur de la série.
Chaque mouvement de temps est détecté, le compteur est réinitialisé à sa valeur initiale - dans ce cas 10. Je vais mettre cela à 180 secondes lorsqu’il est installé. Les lumières restera allumé pendant 180 secondes, autant il n’y a aucun mouvement détecté.
La variable « ledon » est définie sur 1 lorsque les lumières sont allumées, ce qui empêche la lumière de la rangée de LEDs affectant le circuit. C’est seulement remis à 0 lorsque le compteur atteint 0 due à aucun mouvement détecté.
J’espère que tout est logique et est d’une certaine utilité.
Voici le code de l’Arduino - pas le mieux (copier / coller pas trop malin!), mais ça marche.
//*********************************************************************************
T.Reynolds - novembre 2014
détecteur de mouvement avec capteur de lumière & minuterie
const int ledPin = 13 ; sortie à LEDs / vraiment
const int inputPin = 4 ;
int now_dark = 60 ; Quand la mesure de lumière tombe au-dessous de ce niveau, vérifier pour le mouvement.
ledon int = 0 ; Une fois définie, contournements LDR si le circuit est unnaffected
par les lumières, il a juste changé !
Réinitialise lorsque timercnt = 0, c'est-à-dire aucun mouvement détecté.
int analogPin = 3 ; résistance de k 22 (ou similaire) à la broche analogique 3 et Gnd
La broche 3 de LDR et + 5V
int val = 0 ; valeur lue sur la broche analogique 3
int timercnt ;
void setup()
{
Serial.Begin(9600) ; test seulement
pinMode (ledPin, sortie) ;
pinMode (inputPin, entrée) ; }
void loop()
{int valeur = digitalRead(inputPin) ;
Si (ledon == 0)
{
Val = analogRead(analogPin) ;
Delay(1000) ; test seulement
Serial.println(Val) ; test seulement
}
Si (valeur == HIGH & & val < now_dark || value == HIGH & & ledon == 1)
{
digitalWrite (ledPin, HIGH) ;
timercnt = 10 ; Compte à rebours d’ici - 10 secs est le seul test
Lumières restera allumé pendant 10 secondes si aucun mouvement détecté.
Chaque mouvement fois détecté, timercnt la valeur 10.
}
Si (valeur == LOW & & timercnt > 0)
{
Serial.Print(">") ; test seulement
Serial.println(timercnt) ; test seulement
Ledon = 1 ;
Delay(1000) ; timercnt--;
Si (timercnt == 0)
{
turnoff() ;
Ledon = 0 ;
}
}
}
Sub turnoff()
{
digitalWrite (ledPin, basse) ;
}
// ====================================================