Arduino 如何存储按下的按钮,然后等待“millis()-changeTime>=10000”,然后调用函数changeLights()?
我正在制作一个交互式交通灯,三个LED用于汽车,两个LED用于行人。这些行人有一个按钮,以便他们可以请求绿灯。标准设置为:汽车绿灯亮10秒,行人红灯亮5秒。现在,我的代码只允许行人在绿灯亮起10秒后按下按钮并获得绿灯 我的问题是,我如何存储在10秒内按下的按钮,并在这10秒钟结束后调用我的函数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
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秒或更长时间,我希望行人立即亮绿灯。真的是时间紧迫,否则我就不会问了。。。那就太好了。。。不过还是要谢谢你@亚历山多如果你有时间,一定要去。此外,访问并阅读,特别是关于如何做的部分。祝项目顺利!