Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 如何存储按下的按钮,然后等待“millis()-changeTime>=10000”,然后调用函数changeLights()?_Arduino_Arduino C++ - Fatal编程技术网

Arduino 如何存储按下的按钮,然后等待“millis()-changeTime>=10000”,然后调用函数changeLights()?

Arduino 如何存储按下的按钮,然后等待“millis()-changeTime>=10000”,然后调用函数changeLights()?,arduino,arduino-c++,Arduino,Arduino C++,我正在制作一个交互式交通灯,三个LED用于汽车,两个LED用于行人。这些行人有一个按钮,以便他们可以请求绿灯。标准设置为:汽车绿灯亮10秒,行人红灯亮5秒。现在,我的代码只允许行人在绿灯亮起10秒后按下按钮并获得绿灯 我的问题是,我如何存储在10秒内按下的按钮,并在这10秒钟结束后调用我的函数changeLights,而无需等待 我的代码: void loop() { int buttonState = digitalRead(pushButton); if (buttonSt

我正在制作一个交互式交通灯,三个LED用于汽车,两个LED用于行人。这些行人有一个按钮,以便他们可以请求绿灯。标准设置为:汽车绿灯亮10秒,行人红灯亮5秒。现在,我的代码只允许行人在绿灯亮起10秒后按下按钮并获得绿灯

我的问题是,我如何存储在10秒内按下的按钮,并在这10秒钟结束后调用我的函数changeLights,而无需等待

我的代码:

void loop() {
    int buttonState = digitalRead(pushButton);

    if (buttonState == HIGH && millis() - changeTime >=
        10000){
        changeLights();
      }
    }

您将需要几个变量:一个用于跟踪行人是否按下了行人专用区等待按钮,另一个是行人按下按钮的时间changeTime

每次调用循环函数时,检查按钮。如果按下按钮且行人尚未等待,则将PederstrianisWaiting更改为true,并在changeTime变量中记录时间

然后,当行人等待时,检查经过的时间。如果是10秒,调用函数,并将行人专用区更改为false

代码如下所示:

bool pedestrianIsWaiting = false;
unsigned long changeTime;

void loop()
{
    int buttonState = digitalRead(pushButton);
    if (buttonState == HIGH && !pedestrianIsWaiting)
    {
        pedestrianIsWaiting = true;
        changeTime = millis();
    }

    if (pedestrianIsWaiting)
    {
        unsigned long elapsedTime = millis() - changeTime;
        if (elapsedTime >= 10000)
        {
            changeLights();
            pedestrianIsWaiting = false;
        }
    }
}

不清楚你在问什么。请澄清这个问题。@Alessando你想知道如何首先获得changeTime?我正在制作一个交互式交通灯,其中三个LED指示汽车,两个LED指示行人。这些行人有一个按钮,以便他们可以请求绿灯。标准设置为:汽车绿灯亮10秒,行人红灯亮5秒。现在,我的代码只允许行人在绿灯亮起10秒后按下按钮并获得绿灯。我想我的问题是,我如何存储在10秒内按下的按钮,并在这10秒内调用我的函数changeLights,而不必等待。这很好,但是如果一个行人在汽车获得绿灯5秒钟后请求绿灯怎么办。然后我希望行人只等五秒钟就可以得到绿灯。现在行人只在他们要求10秒后才得到绿灯。如果汽车的绿灯亮了10秒或更长时间,我希望行人立即亮绿灯。真的是时间紧迫,否则我就不会问了。。。那就太好了。。。不过还是要谢谢你@亚历山多如果你有时间,一定要去。此外,访问并阅读,特别是关于如何做的部分。祝项目顺利!