【发布时间】:2021-10-22 11:51:42
【问题描述】:
我正在编写机器人的控制器逻辑。控制器上有 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
}
【问题讨论】:
-
您要查找的术语是“去抖动”
-
您需要延迟单个按钮按下事件以允许正确评估所需命令。因为你有一个 sleep (我不推荐,最好安排任务执行)你可以用一个计数器来等待几百毫秒