Étape 3: Codage:-
#include servo myservo ; crée un maximum de //a objet servo de huit objets servo peuvent être createdint pos = 0 ; variable pour stocker la position du servo / / montant de temps, nous donnons le capteur à étalonner (10 à 60 secondes selon la fiche technique)
int calibrationTime = 30 ; //the temps quand le capteur génère un faible impulselong non signé
int lowIn ; la durée en millisecondes, que le capteur doit être faible / / avant que nous assumons tous les mouvement a stoppedlong non signé
int pause = 5000 ;
Boolean lockLow = true ;
Boolean takeLowTime ;
int pirPin = 12 ; broche numérique connecté à pirPos outputint de la PIR = 13 ; se connecte à broches 5V de la PIR
void setup() {}
myservo.Attach(4) ; servo se fixe à la broche 4 Serial.begin(9600) ; commence la communication série
pinMode (pirPin, entrée) ;
pinMode (pirPos, sortie) ;
digitalWrite (pirPos, HIGH) ; donner le temps de sonde pour calibrer
Serial.println ("calibrage capteur") ;
pour (int i = 0; i < calibrationTime; i ++) {}
Serial.Print(calibrationTime-i) ;
Serial.Print("-") ;
Delay(1000) ; }
Serial.println() ;
Serial.println("Done") ; tout en faisant ce Instructable, j’ai eu quelques problèmes avec sortie //going du PIR haute immédiatement après le calibrage //this attend jusqu'à ce que la sortie de la PIR est faible avant de terminer le programme d’installation
même si (digitalRead(pirPin) == HIGH) {}
Delay(500) ;
Serial.Print(".") ; }
Serial.Print ("capteur actif");}
void loop() {}
if(digitalRead(pirPin) == HIGH) {//if la sortie PIR est haut, tournez servo / * tourne servo de 0 à 180 degrés et le dos, elle le fait en augmentant la variable « pos » par 1 toutes les 5 millisecondes jusqu'à ce qu’il frappe 180 et elle puis mise en position du servo en degrés par rapport au « pos » toutes les 5 millisecondes le fait dans le sens inverse de la faire revenir en arrière pour en savoir plus à ce sujet , google "pour les boucles" pour changer la quantité de degrés le servo tourne, changer le nombre de 180, au nombre de degrés souhaité à son tour ** /
pour (pos = 0; pos < 180; pos += 1) //goes de 0 à 180 degrés {//in étapes d’un degré
myservo.Write(POS) ; raconte le servo pour aller à la position de delay(5) de la variable « pos » ; attend que le servo atteindre la position}
pour (pos = 180; pos > = 1; pos-= 1) //goes de 180 à {0 degrés
myservo.Write(POS) ; pour rendre le servo à aller plus vite, réduire la durée des retards pour delay(5) ; pour le faire aller plus lentement, augmenter le nombre. }
if(lockLow) {//makes sûr de que nous attendre à une transition vers le bas avant sortie supplémentaire est faite
lockLow = false ;
Serial.println("---") ;
Serial.Print ("mouvement détecté à") ;
Serial.Print(Millis()/1000) ;
Serial.println (« sec ») ;
Delay(50) ; }
takeLowTime = true ; }
if(digitalRead(pirPin) == faible) {}
{if(takeLowTime)}
lowIn = millis() ; économiser le temps de la transition entre la haute et basse
takeLowTime = false ; Veillez à ce que cela se fait uniquement au début d’une phase de faible} //if le capteur est faible pour plus de la pause donnée, //we pouvez supposer que le mouvement n’a cessé
Si (! lockLow & & millis() - lowIn > pause) {//makes sûr ce bloc de code est seulement exécuté à nouveau après //a nouvelle séquence de mouvement a été détecté
lockLow = true ; Serial.Print ("requête s’est terminée à ») ; sortie
Serial.Print((Millis() - pause) / 1000) ;
Serial.println (« sec ») ;
Delay(50) ; } }
}