Go Down

Topic: SOLUCIONADO Problema con soft para juego de reles (Read 304 times) previous topic - next topic

a188024

May 29, 2019, 02:25 am Last Edit: May 29, 2019, 02:05 pm by a188024
Hola

Perdonar, he tenido que editar porque habia puesto que con los led fallaba y es al reves...
con los reles falla y con los leds va bien... por lo que supongo que es por hard.
Estoy haciendo pruebas de encender y apagar unos reles en una determinada secuencia sin que se lleguen a encender los dos a la vez y no hay forma...
Tengo al menos dos momentos en que se encienden los dos... uno es al principio y otro por el final.
Por favor, podeis indicarme algun posible error... porque llevo 2 horas dandole vueltas y no hay forma.
Segurisimo que teneis alguna forma para hacerlo mas sencillo lo cual por otro lado tambien agradeceria (supongo que seria con millis)... pero lo que quiero es aprender... es decir quiero saber donde esta mi fallo... o igual es que al usar delay termina fallando... no se...

Code: [Select]
int entrada = 9;
int salida = 8;
void setup() {
  pinMode(entrada,OUTPUT);
  pinMode(salida,OUTPUT);
  digitalWrite(entrada,LOW);
  digitalWrite(salida,LOW);
}
void loop() {
  digitalWrite(entrada,HIGH);
  digitalWrite(salida,LOW);
  delay(1000);

  digitalWrite(entrada,LOW); //para 1 sg
  delay(1000);
 
  digitalWrite(entrada,HIGH); //entra 3 sg
  delay(3000);

  digitalWrite(entrada,LOW); //para 1/4 sg
  digitalWrite(salida,LOW);
  delay(250);

  digitalWrite(salida,HIGH); //sale 1 sg
  delay(10000);
 
  digitalWrite(salida,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(entrada,HIGH); //entra 4 sg
  delay(4000);

  digitalWrite(entrada,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(salida,HIGH); //sale 5 sg
  delay(5000);

  digitalWrite(salida,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(entrada,HIGH); //entra 8 sg
  delay(8000);

  digitalWrite(entrada,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(salida,HIGH); //sale 7 sg
  delay(7000);

  digitalWrite(salida,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(entrada,HIGH); //entra 5 sg
  delay(5000);

  digitalWrite(entrada,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(salida,HIGH); //sale 10 sg
  delay(10000);

  digitalWrite(salida,LOW); //para 1/4 sg
  delay(250);

  digitalWrite(entrada,HIGH); //entra 10 sg
  delay(10000);

  digitalWrite(entrada,LOW); //para 1/4 sg
  delay(10000);

  digitalWrite(salida,HIGH); //entra 10 sg
  delay(10000);
 
  digitalWrite(salida,LOW); //para 1/4 sg
  delay(10000);
 }


Por cierto, ahora que lo veo no hagais caso al tiempo de los delays con respecto al comentario porque he estado haciendo pruebas y no coinciden.


RIG

Tu mismo pusiste la respuesta...
Quote
con los reles falla y con los leds va bien... por lo que supongo que es por hard.
Entonces, sin ver como tienes conectados los relevadores, poca ayuda puedo ofrecerte mas que suponer que los estas alimentando directamente a la salida del arduino.  Sube una imagen o esquemático de como conectas los led y los relay (mira en las normas del foro como debes hacerlo)

a188024

#2
May 29, 2019, 07:56 am Last Edit: May 29, 2019, 08:02 am by a188024
Gracias
Espero que se aprecie en la foto.
Aun después de escribir el post le puse el voltímetro a las salidas del rele y en el momento en que están encendidos los 2 led del rele no marca voltaje por tanto si que debe de haber cruce.

RIG

Bien, una imagen lo cambia todo,  esos módulos vienen con lógica inversa, quiere decir que cuando tu mandas un low por el arduino el relay se enciende y viceversa, cuando mandas un high se apaga

Tienes que cambiar en el codigo todos los HIGH por LOW y viceversa.
Por el momento puedes hacer la prueba usando la salida del relay que es normalmente cerrada (N/C), asi cuando tengas un high del arduino tendrás esos contactos cerrados


a188024


RIG

#5
May 29, 2019, 08:39 am Last Edit: May 29, 2019, 08:39 am by RIG
Pues en tu imagen,  la mayoria de esos modulos asi trabajan, con la logica inversa, por eso se te encienden los 2 relay juntos al final de la secuencia que es cuando tienes oos 2 pines en low
Haz la prueba que te dije y veras

a188024

Joer, pues muchas gracias
No sé ni las horas que estuve revisando el código porque no veía el fallo.

a188024

Pues si, tenías toda la razón del mundo.
Ya podía estar buscando, ya.
Muchas gracias

Go Up