¿Cómo puedo obtener esto para no leer una entrada digital arduino?

2

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 pulsador momentáneo. Para el pulsador momentáneo estoy usando la biblioteca onebutton. 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 todavía se lee y mi programa se ejecuta independientemente de si el interruptor está o no activado.

void loop()
{
    ignition_mode = digitalRead(ignition);
    if (ignition_mode == HIGH);
    {
        button.tick();
    }
}
    
pregunta D.W.

2 respuestas

3

Si formatea su código correctamente, puede ver que no cumple con su objetivo:

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 tengas la intención:

void loop()
{
  ignition_mode = digitalRead(ignition);
  if (ignition_mode == HIGH)
  { 
    button.tick();
  }
}
    
respondido por el MrSmith42
3

Dos posibilidades:

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

if (ignition_mode) {
 .. Do something here
}

¿Has comprobado que el nivel en ese pin en realidad cambia o está fijado en algún valor?

    
respondido por el Tom L.

Lea otras preguntas en las etiquetas