Pulsador de dos estados

Hola a todos , soy nuevo en el foro. Mi duda es la siguiente
estoy realizando un control de temperatura con un arduino mega,el cual le conecto un lcd tft 2,4 para visualizar temperatura y establecer un setpoint.
El problema es, Con un pote selecciono la temperatura,y luego con un pulsador la seleccion.

Pero no he podido hacer que el pulsador seleccione cuando lo pulso,y deseleccione cuando lo vuelvo a pulsar

En resumidas cuentas necesito que cuando pulse active una entrada,y cuando vuelva al pulsar la desactive.

encontre esto por internet pero no me sirve para lo que yo necsito
http://www.prometec.net/condicionales-botones/

Hola que tal, a ver si te sirve esto.

 // Encender y apagar led con pulsador   
     
       // Pines
   const int pin_pulsador = 3;
    const int pin_led = 2;

       // Estados
   const int estado_pulsador_apagado = 0;
    const int estado_pulsador_encendido = 1;

       // Variables
   int estado_pulsador;
    int PulsadorAntes = LOW;
     int PulsadorAhora = LOW;

         // Inicializar
   void setup() {
    pinMode(pin_pulsador, INPUT);
     pinMode( pin_led, OUTPUT);
      }

       //Funcionalidad

  

   void loop() {
    ObtenerDatosPulsador();
     ControlLed();
      }


    void ObtenerDatosPulsador() {
     PulsadorAntes = PulsadorAhora;   
      PulsadorAhora = digitalRead(pin_pulsador);
       delay(50);
        }

    void EncenderLed()
    {
     digitalWrite(pin_led, HIGH);
      estado_pulsador = estado_pulsador_encendido;
       }

   void ApagarLed()
    {
     digitalWrite(pin_led, LOW);
      estado_pulsador = estado_pulsador_apagado;
       }

   void ControlEstadoLedApagado()
   {
    if ((PulsadorAhora == LOW) && (PulsadorAntes == HIGH))
    {
      EncenderLed();
       }}

   void ControlEstadoLedEncendido()
   {
    if ((PulsadorAhora == LOW) && (PulsadorAntes == HIGH))
    {
     ApagarLed();
     }}

   void  ControlLed() {
    switch (estado_pulsador)
     {
      case estado_pulsador_apagado:
       ControlEstadoLedApagado();
        break;
         case estado_pulsador_encendido:
          ControlEstadoLedEncendido();
           break;
            }}

ya lo solucione . muchas gracias igual

Si lo solucionaste es mejor que postees tu solución!!

Porque es bueno pedirle a los demás que te ayuden pero el compromiso de cualquier forero que consulta es indicar como lo resolvió, sino luego de 6 meses viene alguien con el mismo problema y te preguntará y como a ti no te importó poner la solución, los moderadores tendremos que decirle, mira, este hilo tiene mas de 120 dias sin movimientos y el autor no puso la solución, te das cuenta?

Entonces mejor prevenir que curar no?

aca publico la solucion

// Ejemplo 1_6 _Uso de un pulsador para ON-OFF
// Una pulsación activa el LED, que quedará enecendido
// hasta recibir otra pulsación

const int LED = 22; // pin de salida
const int PULSADOR = A10; //pin para el pulsador

int valor = 0; // variable que almacenará la lectura del pulsador
int old_valor = 0; //variable que almacenará la lectura anterior
// del pulsador. Comparandolas sabremos si ha cambiado
int estado_led = 0; // Variable que almacena el estado del LED
// de salida
void setup() 

{
   Serial.begin(9600);
pinMode(LED, OUTPUT); // Programamas el LED como salida
pinMode(PULSADOR, INPUT); // el PULSADOR como entrada
}
void loop()
{
valor = digitalRead(PULSADOR); // leemos el pulsador
// y comprobamos si ha habido un cambio de estado
// comparandolo con el valor anterior

if ((valor == HIGH) && (old_valor == LOW)){
estado_led = 1 - estado_led;
delay(10);
}
old_valor = valor; // El valor leído ahora ya es el "viejo"
// así que lo almacenamos para la siguiente pulsación

if (estado_led == 1)
{
Serial.println("prendido"); // Encendemos el led si el estado_led es "1"
} else {
Serial.println("apagafo");
}
}