Intentando usar 4 PIR con 2 servos y un rele

Buenas, estoy haciendo un juguete para jugar (fastidiar) con los gatos, en base es una torreta con punteros láser con 2 servos, eje X y eje Y.

En principio la hice manual (con un joystick) y funcionaba bien, se movían los servos correctamente y al pulsar el botón del joystick, se activaba el relé y se encendían los punteros láser, hasta aqui todo bien, pero se me ocurrió hacerla automática (como las ametralladoras de Aliens, el regreso), poniéndole 4 sensores PIR (HC-SR501) cubriendo los 180 grados frontales, cada sensor abarca 45 grados (la base está diseñada de esa forma), porque quiero que la torreta "persiga" al gato que tenga delante.

El tema es que con un solo sensor, el programa funciona bien, pero al poner los 4 se me vuelve loco el invento, y me trae de cabeza, añado que he mirado por internet y no he encontrado casi nada con mas de un PIR y mi nivel de Arduino es flojete, os adjunto el codigo, a ver si me podéis echar un cable, ya que estoy ilusionado con el juguete, porque me lo he diseñado e impreso yo mismo (soy aprendiz de muchas cosas, jejeje).

#include <Servo.h>

int sensor45 = 2; // pines de los sensores
int sensor90 = 3;
int sensor135 = 4;
int sensor180 = 5;

Servo serbas; // servo base
Servo serbat; // servo bateria

int rele = 12; // pin del rele

void setup() {
  serbas.attach(10); // asigno pin 10 al servo de la base
  serbas.write(90); // lo situo en posicion de descanso
  serbat.attach(9); // asigno pin 9 al servo de la bateria
  serbat.write(65); // lo situo en posicion de descanso
  pinMode(sensor45, INPUT); // declaro los pines como entrada
  pinMode(sensor90, INPUT);
  pinMode(sensor135, INPUT);
  pinMode(sensor180, INPUT);
  pinMode(rele, OUTPUT); // declaro el rele como salida
  digitalWrite(sensor45, LOW); // apago los sensores
  digitalWrite(sensor90, LOW);
  digitalWrite(sensor135, LOW);
  digitalWrite(sensor180, LOW);

}

void loop() { // y partir de aqui es donde falla

  if (digitalRead(sensor45 == HIGH)){
    serbas.write(28);
    serbat.write(90);
    digitalWrite(rele, HIGH);
    delay(15);
  }else{
    serbas.write(90);
    serbat.write(65);
    digitalWrite(rele, LOW);
    delay(15);
    }
  if (digitalRead(sensor90 == HIGH)){
    serbas.write(73);
    serbat.write(90);
    digitalWrite(rele, HIGH);
    delay(15);
  }else{
    serbas.write(90);
    serbat.write(65);
    digitalWrite(rele, LOW);
    delay(15);
    }
  if (digitalRead(sensor135 == HIGH)){
    serbas.write(108);
    serbat.write(90);
    digitalWrite(rele, HIGH);
    delay(15);
  }else{
    serbas.write(90);
    serbat.write(65);
    digitalWrite(rele, LOW);
    delay(15);
    }
  if (digitalRead(sensor180 == HIGH)){
    serbas.write(153);
    serbat.write(90);
    digitalWrite(rele, HIGH);
    delay(15);
  }else{
    serbas.write(90);
    serbat.write(65);
    digitalWrite(rele, LOW);
    delay(15);
    }
}

Decir también que la placa es Arduino UNO, los servos son los SG-90 y el relé es un módulo Keyes que me vino en el Starter Kit, muchas gracias de antemano y un saludo.

Como tengo un gato me abstengo de ayudarte...

Lo siento muchacho. no te pienso ayudar a realizar un maltrato a gatos.
Los gatos son los animales mas nobles del planeta (y hay otros) pero ...

Mira mi avatar, y creo que tu tienes un problema no tu exposición en crear un juguete sino fastidiar al mejor compañero del hombre que es el gato, vale que todos dicen que es el perro y eso es porque nunca tuvieron un gato,..

Que lindos y guapos son.

Una cita;

"Dios creo los gatos, para que el hombre sintiera placer de acariciar un tigre..."
Alejandro Dumas.

Saludos!

Buenas, yo tambien soy amante de los gatos, que además tengo 8, todos cogidos de la calle y por fastidiar me refiero a verlos perseguir el puntero láser, que tampoco creo que se pueda llamar "maltrato", pero en fin, muchas gracias.

Bueno, ya consegui que funcionara, asi que ya podemos cerrar el tema.

Por otro lado, lightcalamar, no se porqué me has insultado:

lightcalamar:
Lo siento muchacho. no te pienso ayudar a realizar un maltrato a gatos.

En esa línea me has llamado maltratador de animales, que es lo mismo que llamarme delincuente.

Respeto la decisión de jose de no querer ayudarme, pero tu además de no ayudar, me faltas al respeto:

lightcalamar:
creo que tu tienes un problema no tu exposición en crear un juguete sino fastidiar al mejor compañero del hombre que es el gato

Hablas a la ligera e interpretas que tengo un problema mental, cuando no tiene nada que ver con eso.

Mi objetivo no es fastidiar al gato en sí mismo, sino darle un motivo de juego, que por si no lo sabías los gatos, incluso ya viejos, son juguetones, y un juguete como este los estimula, y como comenté en mi post anterior, tengo ocho gatos...

En este foro, he visto que hay gente que se queja (entendidos) de la gente que da pocos datos (no entendidos), unos alegan que si porque le roban la idea o básicamente porque no son entendidos, y yo que intento exponerlo de la manera más clara y concisa que puedo, vas y me atacas.

Si hubiera dicho que es para un proyecto de airsoft, o para un juego de lasertag, seguro que tu actitud habría sido diferente, pero es más fácil interpretar y acusar.

Bueno, a lo que voy, ya resolví el problema, era una combinación de varios errores, por un lado, el cableado, en el cual hay que añadir una resistencia cruzada entre el positivo y el output del sensor (añado imagen del cableado), por otro lado, escribí el programa con los 4 sensores, cuando aún me faltan 3 y resulta que la orden digitalRead si no hay nada conectado en el pin, manda HIGH y LOW de manera aleatoria (cosa que no sabía, pues no soy un entendido), y por último una corrección en el código, que pondré cuando me lleguen los sensores que me faltan y compruebe que va todo bien, sin más que añadir, gracias y un saludo.

Kiruban:
Buenas, estoy haciendo un juguete para jugar (fastidiar) con los gatos, en base es una torreta con punteros láser con 2 servos, eje X y eje Y.

Dice la RAE enlace;

fastidiar [Conjugar el verbo fastidiar]

De fastidio.
Conjug. actual c. anunciar.

  1. tr. Enfadar, disgustar o ser molesto a alguien.
  2. tr. coloq. Ocasionar daño material o moral.
  3. tr. desus. Causar asco o hastío. Era u. t. c. prnl.
  4. prnl. Aguantarse, sufrir con paciencia algún contratiempo inevitable. Si te han suspendido, te fastidias y estudias más.

En ningún momento he intentado insultarte, solo he escrito que no iba a ayudar y he escrito que tienes un problema, si lo he escrito pero el decir que tienes un problema no he dicho cual y tu lo has magnificado.

Tambien dice la RAE (Real Academia Española) este enlace

problema

Del lat. problēma, y este del gr. πρόβλημα próblēma.

  1. m. Cuestión que se trata de aclarar.
  2. m. Proposición o dificultad de solución dudosa.
  3. m. Conjunto de hechos o circunstancias que dificultan la consecución de algún fin.
  4. m. Disgusto, preocupación. U. m. en pl. Mi hijo solo da problemas.
  5. m. Planteamiento de una situación cuya respuesta desconocida debe obtenerse a través de métodos científicos.

Si te has sentido ofendido, te pido disculpas no fue mi intención, sin embargo a nivel personal nunca usaría la electrónica de ningún medio para fastidiar a cualquier ser vivo de una forma u de otra al contrario usaría sus propiedades para ayudarles en todo lo posible.

Y como dicen en mi tierra no le busques 5 pies al gato, que solo tienen 4. Saludos.

Yo había escrito algo (en resumen: que luego lo ayudaría pero que no tenía tiempo) y luego borré ese comentario porque en su momento creí que Lighcalamar tenía razón y luego leí la explicación de Kiruban y ya no estuve tan seguro.

No creo que Kiruban quiera molestar o maltratar a los gatos. Yo he visto videos donde con un puntero laser hacen que el gato juegue intentando atrapar la luz y nadie ha hablado de maltrato.
El pretende hace eso para sus mascotas que como dice son muchas asi que mantenerlas activas debe ser todo un reto.

Yo tengo el mismo problema pero con otro tema en mi casa. Tengo 4 perras y el barrio tiene muchos perros. Me molesta sobre manera que durante la madrugada todo lo que se mueve sea motivo de ladridos de todo tipo de intensidad asi que cuando leí su idea, dije.. me puede ayudar a mi tambien. De hecho quiero y voy a armar un sistema de pistola de agua para curar el comportamiento que acabo de describir y solo para eso. Y no por ellos voy a fastidiar a alguien sino procurarme un mejor sueño en el mediano plazo.
Mi idea es similar a lo que comenta Kiruban pero basado en ecolocalizar los ladridos de las perras que deben ser de un valor importante. Determinar la fuente dirigir la torreta y enviar un chorro de agua que disuada esa situación. Eso lo hago hoy manualmente con un jarro. Cuando me ven dejan de ladrar inmediatamente. Asi que el camino ya esta en marcha pero como hay muchos eventos que no son corregidos siguen haciéndolo.
Asi que tal vez inicie un proyecto en el foro con esta idea. Un ecolocalizador que mueve una plataforma XYZ que dispara un chorro de agua para calmar los ladridos. Veremos de donde saco el tiempo porque tengo tantas cosas iniciadas que no estoy resolviendo ninguna.

Espero ayude a que se entienda la idea de Kiruban. Y si lo mio es maltrato estoy atento a que me lo expliquen, repito hoy lo hago para calmar situaciones molestas como cuando otro perro se acerca y se ladran ferozmente a través de las rejas. Mi patio tiene mucha extensión y alcanzar una perra en toda la longitud para corregirla como dice Cesar Millan requiere un estado físico que ya no tengo.

Buenas, gracias surbyte por tu exposición, por otro lado, tu pistola de agua no creo que requiera Z, porque la Z se la pones tu en donde la coloques, el tema es la ecolocación tipo murciélago, que es lo que creo yo que va a ser más complicado, por si te interesa ver como es mi torreta (está en la parte de control con joystick), pongo el link del vídeo, la diseñé con FreeCad y la imprimí con la impresora 3D, un saludo.

Batería láser con joystick

Jajaja si necesito Z porque mis perras se suben a un nicho de gas (espero se entienda) que es el sitio donde esta el medidor que esta a 60 cm de altura.Asi que para darles con el agua debo apuntar bien.. pero tal vez tengas razón.
Ahora miro tu video.

Hay que controlar esas aceleraciones en el servo no te parece? Muy dinámico. Se va a destartalar con el tiempo. Busca la manera de suavizarlos.

Buenas, lo de la velocidad del servo lo tengo en tareas pendientes XDDD, quiero que sea rápido, pero no tanto, que con tanto reprise se mueve la base y todo jejeje, un saludo.