Étape 3: Étape finale (câblage et codage)
Le câblage
............................................................................................................................................................................................
. La broche de terre (GND) sur le détecteur doit être branchée sur la broche de terre de l’Arduino, la goupille de 5 volts (VCC) doit être branchée sur la broche numérique de l’Arduino 13 et la broche de données (OUT) doit être branchée sur la broche numérique de l’Arduino 12.
Le fil rouge du servo doit être branché sur la broche 5 volts de l’Arduino, le fil marron doit être branché sur la broche de terre de l’Arduino et le câble de signal (il était blanc sur mon servo) doit être branché sur la broche numérique de l’Arduino 4.
...........................................................................................................................................................................................
WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
S’il vous plaît envoyer le code d’abord puis allez pour le câblage
...........................................................................................................................................................................................
Code : vous pouvez simplement le copier, ou vous pouvez aussi télécharger depuis l’instructable. :-)
............................................................................................................................................................................................
/*
AADI creationz
*/
#include
Servo myservo ; crée un maximum de //a objet servo servo huit objets peuvent être créés de
int pos = 90 ; variable pour stocker la position du servo
quantité de temps, nous donnons le capteur à étalonner (10 à 60 secondes selon la fiche technique)
int calibrationTime = 30 ;
le temps quand le capteur génère une impulsion faible unsigned long int lowIn ;
la durée en millisecondes, le capteur doit être faible //before nous supposons tout mouvement a cessé longtemps unsignedInt pause = 5000 ;
Boolean lockLow = true ; Boolean takeLowTime ;
int pirPin = 12 ; broche numérique connecté à pirPos de la PIR sortie int = 13 ; se connecte à broches 5V de la PIR
void setup() {myservo.attach(4) ; //attaches servo à la broche Serial.begin(9600) 4; //begins communication série pinMode (pirPin, INPUT); pinMode (pirPos, sortie); digitalWrite (pirPos, HIGH) ;
donner le temps de sonde pour calibrer Serial.println (« calibrage capteur") ; pour (int i = 90; 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 tout en (digitalRead(pirPin) == HIGH) {delay(500) ; Serial.Print(".") ; } Serial.print("SENSOR ACTIVE") ; }
void loop() {}
if(digitalRead(pirPin) == HIGH) {//if le PIR sortie est haute, tour servo
/ * servo tourne de 0 à 180 degrés et le dos, il fait ceci en augmentant la variable « pos » en 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 sur cette, google "pour les boucles" pour changer la quantité de degrés le servo tourne , modifier le nombre de 180 le 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) ; //tells servo pour aller à positionner dans la variable « pos » delay(5) ; //waits pour le servo atteindre la position} pour (pos = 180; pos > = 1; pos-= 1) //goes de 180 degrés 0 {myservo.write(pos) ; //to faire 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 nous attendre à une transition vers le bas avant sortie supplémentaire 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() ; //save moment de la transition entre haut et bas takeLowTime = false ; //make que ceci soit effectué 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 a arrêté 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) ; } } }