Paso 3: Paso Final (cableado y codificación)
El cableado
............................................................................................................................................................................................
. El conector de tierra (GND) en el sensor PIR se debe enchufar en el conector de tierra de Arduino, el pin de 5 voltios (VCC) debe estar conectado en el pin digital de Arduino 13, y el pin de datos (a) debe estar conectado en el pin digital de Arduino 12.
Cable rojo del servo debe estar conectado en pin de 5 voltios de Arduino, el cable marrón debe conectarse en el conector de tierra de Arduino y el cable de señal (era blanco sobre mi servo) debe estar conectado en el pin digital de Arduino 4.
...........................................................................................................................................................................................
WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Por favor subir el código primero y luego ir para el cableado
...........................................................................................................................................................................................
Código: puede simplemente copiarlo o también se puede descargar desde el instructable. :-)
............................................................................................................................................................................................
/*
AADI creationz
*/
#include
Servo myservo; crea servo objeto //a máximo ocho servo se pueden crear objetos
int pos = 90; variable para almacenar la posición del servo
cantidad de tiempo da el sensor a calibrar (10 a 60 segundos según la hoja de datos)
int calibrationTime = 30;
el momento cuando el sensor produce un impulso de baja mucho tiempo unsigned int lowIn;
la cantidad de milisegundos que el sensor ha de ser baja //before asumimos todo el movimiento ha detenido mucho tiempo unsigned int pausa = 5000;
Boolean lockLow = true; takeLowTime Boolean;
pirPin INT = 12; pin digital conectado a pirPos de int salida de PIR = 13; se conecta al pin de 5V de PIR
void setup() {myservo.attach(4); //attaches servo al pin 4 Serial.begin(9600); //begins comunicación serie pinMode (pirPin, entrada); pinMode (pirPos, salida); digitalWrite (pirPos, HIGH);
darle tiempo al sensor para calibrar Serial.println ("calibración sensor"); para (int i = 90; i < calibrationTime; i ++) {Serial.print(calibrationTime-i); Serial.Print("-"); Delay(1000); } Serial.println(); Serial.println("Done"); mientras se hace este Instructable, tuve algunos problemas con salida //going del PIR alta inmediatamente después de la calibración //this espera hasta que la salida del PIR es baja antes de terminar la instalación mientras (digitalRead(pirPin) == HIGH) {delay(500); Serial.Print("."); } Serial.print("SENSOR ACTIVE"); }
void loop() {}
if(digitalRead(pirPin) == HIGH) {//if PIR de salida es alta, servo de vuelta
/ * vueltas servo de 0 a 180 grados y la espalda lo hace al aumentar la variable "pos" 1 de cada 5 milisegundos hasta que llega a 180 y ajuste de posición del servo en grados de "pos" cada 5 milisegundos entonces lo hace en sentido inverso para que volver a aprender más acerca de esto, google "loops" para cambiar la cantidad de grados que gira el servo , cambiar el número 180 en el número de grados que desea que gire ** para (pos = 0; pos < 180; pos += 1) //goes de 0 a 180 grados {//in pasos de un grado myservo.write(pos); //tells servo a la posición en la variable "pos" delay(5); //waits para el servo a la posición} para (pos = 180; pos > = 1; pos-= 1) //goes de 180 a 0 grados {myservo.write(pos); //to hacer el servo va más rápido , disminuir el tiempo de retraso para delay(5); para hacer que vaya más lento, aumentar el número. } if(lockLow) {//makes que esperamos una transición a la baja antes de la salida más lockLow = false; Serial.println("---"); Serial.Print ("movimiento detectado en"); Serial.Print(Millis()/1000); Serial.println ("sec"); Delay(50); } takeLowTime = true; }
if(digitalRead(pirPin) == LOW) {}
if(takeLowTime) {lowIn = millis(); //save el tiempo de la transición de alto a bajo takeLowTime = false; //make que esto se realice sólo en el inicio de una fase bajo} //if el sensor es baja por más de la pausa dada, //we puede asumir si se ha detenido el movimiento de (! lockLow & & millis() - lowIn > pausa) {//makes que este bloque de código sólo se ejecuta otra vez después de //a nueva secuencia de movimiento ha sido detectado lockLow = true; Serial.Print ("movimiento terminada en"); salida Serial.print((millis() - pausa) / 1000); Serial.println ("sec"); Delay(50); } } }