检测同时按下 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 一个良好的计时器持续时间,以便可以“同时”按下两个按钮,同时让您的应用程序感觉响应迅速。

您可以在循环中使用计数器来实现一个简单的计时器。但是,在某些时候,您会更喜欢基于事件的架构。