首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按下arduino后禁用按钮30秒

按下arduino后禁用按钮30秒
EN

Stack Overflow用户
提问于 2021-12-01 17:23:44
回答 1查看 34关注 0票数 0

我正在与Arduino一起工作,因为我是新来的,需要您的帮助,谢谢!我正在打开LED灯通过按钮30秒,所有工作正常,但有一个问题后,按下按钮灯启动从0秒,但如果我按下按钮15秒后,它将从0秒重新开始,那么,有没有任何方法,我可以禁用按钮也30秒,所以它将只运行30秒,即使我会按下按钮,按钮将工作时,只有在30秒后的灯。

代码语言:javascript
复制
    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();
    }
    }
EN

回答 1

Stack Overflow用户

发布于 2021-12-03 10:41:52

我让正确的代码工作得很好:

代码语言:javascript
复制
    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
        }
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70188616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档