Problema con el bucle "for"
utilicé el bucle "for" para repetir unas instrucciones. cuando tengo conectado por usb el pc y la placa, funciona, pero cuando lo desconecto el bucle no para. el número de veces que quiero que se repita tampoco logro que funcione correctamente.
le dado muchas vueltas y no lo consigo.
el programa es este:
int pulsador1=2; // asigna el pin 2 para el pulsador1
int pulsador2=3; // asigna el pin 3 para el pulsador2
int rele1=4; // asigna el pin 4 para el relé1
int rele2=5; // asigna el pin 5 para el relé2
int rele3=6; // asigna el pin 5 para el relé3
int p1=0; // variable para el estado de pulsador1
int p2=0; // variable para el estado de pulsador2
int entradas=0; // variable para el estado de las entradas
void setup () {
pinmode (rele1, output); // declara el rele1 como salida
pinmode (rele2, output); // declara el rele2 como salida
pinmode (rele3, output); // declara el rele3 como salida
pinmode(pulsador1, input); // declara el pulsadir1 como entrada
pinmode(pulsador2, input); // declara el pulsadir2 como entrada
}
void loop () {
p1=digitalread (pulsador1); // lee valor de la entrada
p2=digitalread (pulsador2); // lee valor de la entrada
if (p1==1 || p2==1) { // si están activos p1 o p2
entradas=1;} // activa la variable
for(int i=0; i<10000; i=i+100) // crea un bucle de 10 ciclos
{
if(entradas==1){
digitalwrite (rele1, low); // desactiva el relé1
digitalwrite (rele2, low); // desactiva el relé2
digitalwrite (rele3, low); // desactiva el relé3
delay(180); //esperamos 0.18 segundos
digitalwrite (rele2, high); // activa el relé2
digitalwrite (rele3, high); // activa el rele3
delay(250); //esperamos 0.25 segundos
}
if(entradas==0) {
digitalwrite (rele1, high); // activa el relé1
digitalwrite (rele2, high); // activa el relé2
digitalwrite (rele3, high); // activa el relé3
}
break;
}
}
le dado muchas vueltas y no lo consigo.
el programa es este:
int pulsador1=2; // asigna el pin 2 para el pulsador1
int pulsador2=3; // asigna el pin 3 para el pulsador2
int rele1=4; // asigna el pin 4 para el relé1
int rele2=5; // asigna el pin 5 para el relé2
int rele3=6; // asigna el pin 5 para el relé3
int p1=0; // variable para el estado de pulsador1
int p2=0; // variable para el estado de pulsador2
int entradas=0; // variable para el estado de las entradas
void setup () {
pinmode (rele1, output); // declara el rele1 como salida
pinmode (rele2, output); // declara el rele2 como salida
pinmode (rele3, output); // declara el rele3 como salida
pinmode(pulsador1, input); // declara el pulsadir1 como entrada
pinmode(pulsador2, input); // declara el pulsadir2 como entrada
}
void loop () {
p1=digitalread (pulsador1); // lee valor de la entrada
p2=digitalread (pulsador2); // lee valor de la entrada
if (p1==1 || p2==1) { // si están activos p1 o p2
entradas=1;} // activa la variable
for(int i=0; i<10000; i=i+100) // crea un bucle de 10 ciclos
{
if(entradas==1){
digitalwrite (rele1, low); // desactiva el relé1
digitalwrite (rele2, low); // desactiva el relé2
digitalwrite (rele3, low); // desactiva el relé3
delay(180); //esperamos 0.18 segundos
digitalwrite (rele2, high); // activa el relé2
digitalwrite (rele3, high); // activa el rele3
delay(250); //esperamos 0.25 segundos
}
if(entradas==0) {
digitalwrite (rele1, high); // activa el relé1
digitalwrite (rele2, high); // activa el relé2
digitalwrite (rele3, high); // activa el relé3
}
break;
}
}
en primer lugar decirte que leer tu código supone un gran esfuerzo porque no esta identado (sangrado).
mira identación en la wikipedia.
en tu código creo que la sentencia
if(entradas==1){
debes estar antes del bucle y conteniendolo él
jopapa
www.jopapa.me
mira identación en la wikipedia.
en tu código creo que la sentencia
if(entradas==1){
debes estar antes del bucle y conteniendolo él
jopapa
www.jopapa.me
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Problema con el bucle "for"
arduino
Comments
Post a Comment