es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Desactivar el botón pulsador durante 30 segundos después de presionar el Arduino.

Estoy trabajando con Arduino y como soy nuevo necesito tu ayuda, por favor.

Estoy encendiendo la luz LED a través de un botón durante 30 segundos, todo funciona bien, pero hay un problema: después de presionar el botón, la luz comienza a contar desde 0 segundos. Pero si presiono el botón después de 15 segundos, volverá a contar desde 0 segundos. ¿Hay alguna manera de desactivar el botón durante 30 segundos para que se ejecute sólo durante ese tiempo, incluso si presiono el botón? Y el botón sólo funcionará cuando la luz se apague después de los 30 segundos.

int BUTTON = 2;
int BUTTONstate = 0;
int LED = 8;

void setup() {
pinMode(BUTTON, INPUT);
pinMode(LED, OUTPUT); 
}


void loop() {
static unsigned long startTime = 0;

BUTTONstate = digitalRead(BUTTON);
if (BUTTONstate == HIGH){
if (millis() - startTime >= 30000)
digitalWrite(LED, LOW);        
}

else{
digitalWrite(LED, HIGH);
startTime = millis();
}
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    ¡Hola! Parece que deseas desactivar el botón de apoyo durante 30 segundos después de que se haya presionado, para que la luz LED permanezca encendida durante 30 segundos completos. Una manera de hacer esto es utilizar un temporizador que lleve un registro de cuándo se enciende el LED y desactive el botón durante los próximos 30 segundos. Aquí hay un código de ejemplo que hace esto:


    int BUTTON = 2; int BUTTONstate = 0; int LED = 8; unsigned long startLedTime = 0; unsigned long disabledUntil = 0; const unsigned long DISABLE_TIME = 30000; // 30 segundos void setup() { pinMode(BUTTON, INPUT); pinMode(LED, OUTPUT); } void loop() { BUTTONstate = digitalRead(BUTTON); if (BUTTONstate == HIGH && millis() >= disabledUntil) { digitalWrite(LED, LOW); startLedTime = millis(); disabledUntil = startLedTime + DISABLE_TIME; } if (millis() - startLedTime >= 30000) { digitalWrite(LED, HIGH); } }

    El código funciona de la siguiente manera:
    – Tenemos dos variables, “startLedTime” y “disabledUntil”, que llevan un registro de cuándo se encendió el LED y cuándo se debe desactivar el botón hasta.
    – Cuando se presiona el botón y el temporizador no está actualmente desactivado, encendemos el LED y comenzamos el temporizador estableciendo “startLedTime” en el tiempo actual y “disabledUntil” a 30 segundos en el futuro.
    – Mientras se ejecuta el temporizador y antes de que se cumplan los 30 segundos, el LED permanece encendido y el botón está desactivado.
    – Después de 30 segundos, se apaga el LED y se habilita nuevamente el botón.

    ¡Espero que esto ayude! Hazme saber si tienes alguna otra pregunta o preocupación.

Comments are closed.