Conmutar entre pulsadores pudiendo pulsar otro temporalmente

Hola, que tal? soy muy nuevo en esto y tengo una duda muy básica pero que no puedo resolver...

Tengo 3 pulsadores, cada uno ilumina un led, quiero que al pulsar cada uno de los botones se ponga el led que pertenece a ese pulsador en HIGH y se mantenga encendido y que los otros 2 se apaguen.De esta manera haría la función de conmutador. También quiero que si aprieto 2 veces el mismo, que este no se apague, que solo se apague si pulso otro de los dos que están apagados.

Pero al mismo tiempo me gustaría que que si tengo un botón pulsado, pueda pulsar los otros 2 pero de manera que no se mantengan en high (solo temporalmente).

he escrito este codigo ,y me conmuta bien entre pulsadores :

  • si mantengo el 3 pulsado y le doy al 2 o al 3, estos se ponen en high y cuando los suelto se apagan.
  • si mantengo el 2 pulsado y le doy al 1, este se pone high y cuando lo suelto se apaga.

Hasta aquí todo bien, el problema es que :

  • si mantengo el 1 pulsado y le doy al 2 o al 3, estos no se encienden
  • si mantengo el 2 ,y pulso el 3, este tampoco se enciende

Que estoy haciendo mal?

void BOTONES (){

if(buttonState1 == HIGH ) { buttonState1 = HIGH; ledState1 = HIGH;

buttonState3 = LOW; ledState3 = LOW; buttonState2 = LOW; ledState2 = LOW; }

if(buttonState2 == HIGH ) { buttonState2 = HIGH; ledState2 = HIGH;

buttonState3 = LOW; ledState3 = LOW; buttonState1 = LOW; ledState1 = LOW; }

if(buttonState3 == HIGH ) { buttonState3 = HIGH; ledState3 = HIGH;

buttonState1 = LOW; ledState1 = LOW; buttonState2 = LOW; ledState2 = LOW; } }

Hola llorencg. Ante todo te recomiendo que leas las normas del foro . El punto 7 dice como insertar códigos. Así que intenta editar tu primer post para que luzcan como deben.

  1. Deberías haber puesto todo tu código para poder ver todo el sketch.

Con lo que has posteado te doy mi opinión: Las ordenes a cumplir parecen contradictorias.

Tengo 3 pulsadores, cada uno ilumina un led, quiero que al pulsar cada uno de los botones se ponga el led que pertenece a ese pulsador en HIGH y se mantenga encendido y que los otros 2 se apaguen.De esta manera haría la función de conmutador.

Esto es facil de implementar.

También quiero que si aprieto 2 veces el mismo, que este no se apague, que solo se apague si pulso otro de los dos que están apagados.

Este ya me parece contradictorio porque si aprieto dos veces en cuanto tiempo? Si no le das tiempo a esta condición, siempre se dará que se aprieta dos veces. Debes ponerle límite, dos veces en un lapso de X segundos.

Pero al mismo tiempo me gustaría que que si tengo un botón pulsado, pueda pulsar los otros 2 pero de manera que no se mantengan en high (solo temporalmente).

Aca no veo que salidas pretendes tener con esta condición