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();
}
}
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();
}
}
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?
Sr. Smith42
if (ignition_mode == HIGH);
no hace nada, porque;
se realiza una declaración vacía si la condición es verdadera.Sr. Smith42
}
falta al menos uno