Acticar circuito , pare 1s , se active de nuevo y pare

Todo lo relacionado con el software de Arduino
Chorro
Mensajes: 11
Registrado: Dom Nov 17, 2019 9:54 pm

Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Chorro » Mar Mar 24, 2020 8:41 am

Buenos días,
Estoy intentando que al activar un circuito modo llave de la app este se active durante 1 segundo y se repita al cabo de 2 segundos
Esto es lo que tengo heco, pero no funciona
if (circuits[12].Value > 0){//Circuito mayor que cero esta encendido
circuits[12].Value=circuits[12].Value+1;//Incremento para temporizado
for (int n=0;n<2;n++){
if (circuits[12].Value >= 10){circuits[12].Value=0;//Cuando value >=10 apgado por tiempo maximo
}
}
Gracias
Última edición por Chorro el Mar Mar 24, 2020 11:53 pm, editado 1 vez en total.

Avatar de Usuario
Sigmundfreud
Mensajes: 374
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Re: Acticar circuito y que se active 2 veces

Mensaje por Sigmundfreud » Mar Mar 24, 2020 2:38 pm

Buenas prueba esto

Código: Seleccionar todo

En variables globales pon

Int segundos =0;


En new second


if ((circuits[12].Value >0)&&( segundos ==0)){//Circuito mayor que cero esta encendido

Segundos=1;
}

If (segundos >0){   //hemos activado el circuito ppr primera vez y activamos  la secuencia

Segundos ++;

If (segundos == 3){

circuits[12].Value =0;
}

Else if( segundos ==5){

Enciende el circuito
}

Else if (segundos ==6){

Apaga el circuit
}

else (las veces que necesites){

En el ultimo último poner  segundos a 0 para que el bucle se pueda volver a activar
}
}

Pruebalo y comentas
Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Chorro
Mensajes: 11
Registrado: Dom Nov 17, 2019 9:54 pm

Re: Acticar circuito y que se active 2 veces

Mensaje por Chorro » Mar Mar 24, 2020 11:47 pm

Gracias por responder
No ha funcionado, se activa el relé pero no se detiene

if ((circuits[12].Value >0)&&( segundos ==0)){//Circuito mayor que cero esta encendido
segundos=1; }
if (segundos >0){(circuits[12].Value >0;)} //hemos activado el circuito por primera vez y activamos la secuencia
segundos ++;
if (segundos == 3){(circuits[12].Value =0);}
else if( segundos ==5){(circuits[12].Value >0);}
else if (segundos ==6){(circuits[12].Value =0);}
segundos=0;
Pero solo se activa unos segundos y se detiene ( no repite el ciclo)
Última edición por Chorro el Sab Mar 28, 2020 4:50 pm, editado 2 veces en total.

Avatar de Usuario
Sigmundfreud
Mensajes: 374
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Re: Acticar circuito y que se active 2 veces

Mensaje por Sigmundfreud » Vie Mar 27, 2020 9:20 am

Chorro escribió:
Mar Mar 24, 2020 11:47 pm
Gracias por responder
No ha funcionado, se activa el relé pero no se detiene
Purs no sé deberia de funcionar...

Código: Seleccionar todo


segundos == 3){

circuits[12].Value =0;
}

Else if( segundos ==5){

Enciende el circuito
}

Else if (segundos ==6){

Apaga el circuit
Segundos=0
}

}
}


Ya lo probaré si tengo un rato
Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Juan Ramon
Mensajes: 323
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Re: Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Juan Ramon » Vie Mar 27, 2020 5:07 pm

Buenas tardes Chorro
Prueba de esta forma, si te funciona, adaptalo a tus necesidades.

GLOBAL VARIABLES ZONE

Código: Seleccionar todo

int segundos=0; // Para el contador de segundos
int temporizador=0; / para activación del temporizador
void LoopNewSecond(){//This event occurs every second

Código: Seleccionar todo

if  ((circuits[12].Value > 0)&&(temporizador==0)){ // Cuando se activa el circuito y el temporizador esta detenido, comienza el temporizador
temporizador=1;
}
if (temporizador==1){// Solo se ejecuta mientras el temporizador esta activado
  segundos++;  
  if (segundos==2){circuits[12].Value=0;}
  if (segundos==4){circuits[12].Value=1;}
  if (segundos==5){circuits[12].Value=0;}
  if (segunsos==7){circuits[12].Value=1;}
  if (segundos==8){circuits[12].Value=0;}
  if (segundos==9){circuits[12].Value=1;}
  if (segundos==10){ // Tiempo máximo para detener el temporizador, una vez alcanzado desactiva circuito y contadores
    circuits[12]=0;
    segundos=0;
    temporizador=0;
  }
}
Juan Ramón.

Chorro
Mensajes: 11
Registrado: Dom Nov 17, 2019 9:54 pm

Re: Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Chorro » Sab Mar 28, 2020 8:50 pm

Gracias por responder
Lo he probado, pero no funciona, se activa pero no repite el ciclo, no se que hago mal, aparentemente está bien
if ((circuits[12].Value > 0)&&(temporizador==0)){ // Cuando se activa el circuito y el temporizador esta detenido, comienza el temporizador
temporizador=1;
}
if (temporizador==1){// Solo se ejecuta mientras el temporizador esta activado
segundos++;
if (segundos==2){circuits[12].Value=0;}
if (segundos==3){circuits[12].Value>0;}
if (segundos==4){circuits[12].Value=0;}
if (segundos==5){ // Tiempo máximo para detener el temporizador, una vez alcanzado desactiva circuito y contadores
circuits[12].Value=0;
segundos=0;
temporizador=0;
}
}
Gracias a todos
Última edición por Chorro el Dom Mar 29, 2020 7:28 am, editado 1 vez en total.

Juan Ramon
Mensajes: 323
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Re: Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Juan Ramon » Sab Mar 28, 2020 9:47 pm

Me parece que estas utilizando un parámetro se comparación donde tendría que ser de asignación.
if (segundos==3){circuits[12].Value>0;}

Para mas detalles pon un serial.print dentro del procedimiento if y que te muestre información para ver porque no funciona
Juan Ramón.

Avatar de Usuario
Sigmundfreud
Mensajes: 374
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Re: Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Sigmundfreud » Sab Mar 28, 2020 10:04 pm

Chorro escribió:
Sab Mar 28, 2020 8:50 pm
Gracias por responder
Lo he probado, pero no funciona, se activa pero no repite el ciclo, no se que hago mal, aparentemente está bien
if ((circuits[12].Value > 0)&&(temporizador==0)){ // Cuando se activa el circuito y el temporizador esta detenido, comienza el temporizador
temporizador=1;
}
if (temporizador==1){// Solo se ejecuta mientras el temporizador esta activado
segundos++;
if (segundos==2){circuits[12].Value=0;}
if (segundos==3){circuits[12].Value>0;}
if (segundos==4){circuits[12].Value=0;}
if (segundos==5){ // Tiempo máximo para detener el temporizador, una vez alcanzado desactiva circuito y contadores
circuits[12].Value=0;
segundos=0;
temporizador=0;
}
}
Gracias a todos


En que parte del programa pones esta funcion?
Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Chorro
Mensajes: 11
Registrado: Dom Nov 17, 2019 9:54 pm

Re: Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Chorro » Dom Mar 29, 2020 6:45 am

En void LoopNewSecond(){//This event occurs every second

Chorro
Mensajes: 11
Registrado: Dom Nov 17, 2019 9:54 pm

Re: Acticar circuito , pare 1s , se active de nuevo y pare

Mensaje por Chorro » Dom Mar 29, 2020 7:26 am

Sigmundfreud escribió:
Sab Mar 28, 2020 10:04 pm
Chorro escribió:
Sab Mar 28, 2020 8:50 pm
Gracias por responder
Lo he probado, pero no funciona, se activa pero no repite el ciclo, no se que hago mal, aparentemente está bien
if ((circuits[12].Value > 0)&&(temporizador==0)){ // Cuando se activa el circuito y el temporizador esta detenido, comienza el temporizador
temporizador=1;
}
if (temporizador==1){// Solo se ejecuta mientras el temporizador esta activado
segundos++;
if (segundos==2){circuits[12].Value=0;}
if (segundos==3){circuits[12].Value=1;}
if (segundos==4){circuits[12].Value=0;}
if (segundos==5){ // Tiempo máximo para detener el temporizador, una vez alcanzado desactiva circuito y contadores
circuits[12].Value=0;
segundos=0;
temporizador=0;
}
}
En que parte del programa pones esta funcion?
Muchas gracias, ya funciona. menudo fallo mas tonto
Os parece bien que borre los mensajes anteriores y deje solo el que está bien?

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados