¿No podrías simplemente hacerlo en software?
¿El botón será una entrada en un dispositivo programable, o necesitas hacer la conmutación en el dominio del hardware?
Al almacenar el estado de un botón en la memoria es bastante fácil usar un interruptor momentáneo como un interruptor.
boolean buttonState = flase; // store for toggle state, flase = off true = on
if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
Serial.println("Button Toggled On"); // do something while button is on
buttonState = true // set button state to on
}
if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
Serial.println("Button Toggled Off"); // do something else while button is off
buttonState = false // set button state to off
}
Disculpe si esto está fuera de lugar, obviamente esta respuesta depende de que utilice una MCU o un chip programable.