¿Cómo puedo hacer que esto no lea una entrada digital de arduino?

He estado trabajando en esto por un tiempo. Es una pequeña parte de un código mucho más grande.

Tengo un pin de entrada digital conectado a un interruptor de encendido/apagado y otro pin de entrada conectado a un botón momentáneo. Para el botón pulsador momentáneo, estoy usando la biblioteca de un botón. Funciona muy bien.

Estoy tratando de hacer que el botón pulsador momentáneo no haga nada a menos que el interruptor de encendido y apagado esté conectado a un pin digital si está encendido o ALTO. Por alguna razón, el botón pulsador momentáneo aún se lee y mi programa se ejecuta independientemente de si el interruptor está activado o no.

void loop()
{
    ignition_mode = digitalRead(ignition);
    if (ignition_mode == HIGH);
    {
        button.tick();
    }
}
if (ignition_mode == HIGH);no hace nada, porque ;se realiza una declaración vacía si la condición es verdadera.
}falta al menos uno

Respuestas (2)

Si formatea su código correctamente, puede ver que no es lo que pretendía:

void loop()
{
  ignition_mode = digitalRead(ignition);
  if (ignition_mode == HIGH)
    ;  // empty statement which means that nothing is done if the condition is true
  { // new scope-block, which has quite no effect here
    button.tick();
  }
}

Lo más probable es que pretendieras:

void loop()
{
  ignition_mode = digitalRead(ignition);
  if (ignition_mode == HIGH)
  { 
    button.tick();
  }
}
dulce, ¿la plataforma IDE utilizada para compilar este código no incluye ni siquiera advertencias básicas sobre código sospechoso?

Dos posibilidades:

Eliminar el ";" después del si. La versión correcta sería:

if (ignition_mode) {
 .. Do something here
}

¿Ha verificado que el nivel en ese pin realmente cambia o está fijo en algún valor?