cambiar setup segun condicion

Hola!
Tengo el siguiente problema, utilizo un receptor infrarrojo el cual para que funcione necesita ir.begin() ; en el setup y tambien utilizo la shield de ethernet la cual no funciona si pongo eso en el setup, por lo que he podido comprobar con el ir.begin() ; arduino queda pendiente de la recepcion de infrarrojos y no acepta el envio desde la web.

Entonces habia pensado, poner alguna condicion en la que si pulso un botón cargue un setup con este código y si no cargue el setup de internet por llamarlo de alguna forma, pero como el setup solo se ejecuta una vez no consigo hacerlo.

Tienen alguna idea?

Gracias

Jossema106:
Hola!
Tengo el siguiente problema, utilizo un receptor infrarrojo el cual para que funcione necesita ir.begin() ; en el setup y tambien utilizo la shield de ethernet la cual no funciona si pongo eso en el setup, por lo que he podido comprobar con el ir.begin() ; arduino queda pendiente de la recepcion de infrarrojos y no acepta el envio desde la web.

Entonces habia pensado, poner alguna condicion en la que si pulso un botón cargue un setup con este código y si no cargue el setup de internet por llamarlo de alguna forma, pero como el setup solo se ejecuta una vez no consigo hacerlo.

Tienen alguna idea?

Gracias

No termino de entenderte, pon tus dos setups aqui a ver a q te refieres.

Hola,

has probado a poner en el setup() algo así?:

buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
// tendrías que tener el botón apretado al encender
ir.begin() ;
}
else
{
// tomas la decisión correspondiente
}

Esa era mi idea pero como el setup solo se ejecuta una vez en el inicio la descarte al no funcionar lo achaque a eso.

Por eso estoy mas perdido.

Gracias

lo reactivo a ver si alguien encuentra algo

Modifica la librería del receptor infrarrojos, para que no se quede a la espera de recibir códigos.

create tus dos setups para entrar en el arranque y luego vuelve al loop…

void setup()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
setup_1();
}
else
{
setup_2();
}
}
void setup_1()
{
ir.begin();
loop();
}

void setup_2()
{
// los que quieras en el otro setup
loop();
}

void loop()
{

}

mas o menos asi tengo creadas las entradas a diferentes menus en el arranque de mi proyecto… depende que boton tengas pulsado al iniciar entra en unos menus o en otros…

prueba así…

No inicialices las funciones en el setup, podrás hacerlo en el loop (creo).

buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
//inicializo IR
}
else
{
//inicializo ethernet
}