检测同时按下 2 个按钮而不响应第一个按钮的按下
Detect when 2 buttons are being pushed simultaneously without reacting to when the first button is pushed
我正在为机器人的控制器逻辑编程。控制器上有 2 个按钮。有 3 个不同的动作与 2 个按钮相关联,第一个发生在仅按下第一个按钮时,第二个发生在仅按下第二个按钮时,第三个发生在两个按钮都被按下时。
通常当用户想要同时按下两个按钮时,他们会一个接一个地按下。这会导致执行不正确的操作。
这是部分代码。
while (true)
{
conveyor_mtr.setVelocity(22, pct);
if (Controller1.ButtonL2.pressing() && Controller1.ButtonL1.pressing())
{
conveyor_mtr.spin(fwd); // action 1
}
else if (Controller1.ButtonL2.pressing())
{
backGoalLift.setAngle(3); // action 2
}
else if (Controller1.ButtonL1.pressing())
{
backGoalLift.setAngle(55); // action 3
}
else
{
conveyor_mtr.stop(hold);
}
task::sleep(20); //ms
}
您可以使用一个短计时器,每次按下按钮时它都会重新启动。每次计时器到期时,您都会检查所有当前按下的按钮。当然,您需要 select 一个良好的计时器持续时间,以便可以“同时”按下两个按钮,同时让您的应用程序感觉响应迅速。
您可以在循环中使用计数器来实现一个简单的计时器。但是,在某些时候,您会更喜欢基于事件的架构。
我正在为机器人的控制器逻辑编程。控制器上有 2 个按钮。有 3 个不同的动作与 2 个按钮相关联,第一个发生在仅按下第一个按钮时,第二个发生在仅按下第二个按钮时,第三个发生在两个按钮都被按下时。
通常当用户想要同时按下两个按钮时,他们会一个接一个地按下。这会导致执行不正确的操作。
这是部分代码。
while (true)
{
conveyor_mtr.setVelocity(22, pct);
if (Controller1.ButtonL2.pressing() && Controller1.ButtonL1.pressing())
{
conveyor_mtr.spin(fwd); // action 1
}
else if (Controller1.ButtonL2.pressing())
{
backGoalLift.setAngle(3); // action 2
}
else if (Controller1.ButtonL1.pressing())
{
backGoalLift.setAngle(55); // action 3
}
else
{
conveyor_mtr.stop(hold);
}
task::sleep(20); //ms
}
您可以使用一个短计时器,每次按下按钮时它都会重新启动。每次计时器到期时,您都会检查所有当前按下的按钮。当然,您需要 select 一个良好的计时器持续时间,以便可以“同时”按下两个按钮,同时让您的应用程序感觉响应迅速。
您可以在循环中使用计数器来实现一个简单的计时器。但是,在某些时候,您会更喜欢基于事件的架构。