【问题标题】:Disable push button for 30 sec after press arduino按下arduino后禁用按钮30秒
【发布时间】:2022-01-08 07:19:09
【问题描述】:

我正在与 Arduino 合作,因为我是新手,需要您的帮助,谢谢! 我通过按钮打开 LED 灯 30 秒,一切正常,但是从 0 秒开始按下按钮灯后出现一个问题,但是如果我在 15 秒后按下按钮,它将从 0 秒重新开始,所以,有什么办法可以让按钮也禁用 30 秒,这样即使我按下按钮,它也只会运行 30 秒,而且按钮只有在 30 秒后亮起时才会起作用。

    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();
    }
    }

【问题讨论】:

  • 这是阻塞延迟可以满足您需要的少数情况之一。只需延迟 30 秒。
  • 延迟30秒后开启led

标签: button timer arduino disabled-input


【解决方案1】:

我得到正确的代码工作正常:

    int pin1 = 13;
    int LED = 8;
    void setup()
    {
      pinMode(pin1, INPUT_PULLUP);
      pinMode(LED, OUTPUT);
    }

    long offAt = 0;
    void loop()
    {
      if ((digitalRead(LED) == LOW ) && (digitalRead(pin1) == LOW) ) //if LED is off  and button is pressed [low because it has pullup resistor]
      { 
        digitalWrite(LED, HIGH);
        offAt = millis() + 30000; //store var of now + 5 seconds
      }

      if (digitalRead(LED) == HIGH) //if led is on
      {
        if (millis() >= offAt) //see if it's time to turn off LED
        {
          digitalWrite(LED, LOW); //it's time. this also re-enables the button
        }
      }
    }

【讨论】:

    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多