问题标签 [debouncing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1307 浏览

vhdl - VHDL:Mealy 状态机内的按钮去抖动

嗨,我正在尝试使用 VHDL 实现一台机器,但我需要消除按钮按下的抖动。我的问题是我不确定应该在哪里实现去抖动。我现在的工作是这样的:

我不确定我是否以正确的方式做事。在第二个过程中,我应该像这样放置第一个处理,还是应该在 state0 阻塞时将它放在里面?另外,由于去抖动的处理需要计数,我是否像这样把它放在 case 块之外?谢谢!

0 投票
1 回答
1362 浏览

interrupt - 两次处理(通过上升/下降沿)按钮中断

我已经编写了一些代码,每次单击按钮时必须一个接一个地(在一轮中)打开 LED,但有时单击按钮不会点亮下一个 LED,而是从四个 LED 中随机点亮一个。这就像一个或多个 LED 跳过它的轮次。我认为问题是由于时钟速率设置错误或上升/下降 EXTI 触发器设置错误引起的。板:STM32DISCOVERY

外设.h

外围.c

主程序

0 投票
0 回答
1654 浏览

vhdl - 状态机应用程序中的 VHDL 按钮去抖动

我正在使用 Lattice XP2-5E 芯片对 FPGA 板进行编程。板上还有 4 行 2 列 LED 灯,我试图用 4 个方向按钮和一个复位按钮来控制它们。例如,如果(第 1 行/第 1 列)LED 亮起,如果我按下右按钮,(第 1 行/第 2 列)LED 将亮起,(第 1 行/第 1 列)LED 将熄灭。

由于没有实现内置的硬件去抖动电路,我需要实现一个 VHDL 解决方案。滴答频率为 25 MHz,最小按钮保持时间为 25 ms。代码如下所示:

有时代码会按预期工作,但通常会打开多个 LED 灯或没有打开 LED - 我想知道这怎么可能 - 有时按下按钮时状态不会改变(即使按住按钮超过 25 毫秒)。

似乎是什么问题。我的想法不多了。

0 投票
1 回答
1787 浏览

lua - 我在 Roblox 中的脚本运行良好,但是一旦我添加了去抖动,它仍然可以完美运行,但只是有时?

例如:脚本在一个游戏会话中运行良好,但在另一个游戏会话中,它根本不起作用;几乎就好像脚本有某种随机机会被删除或完全忽略。如果我删除去抖动,脚本有 100% 的机会再次工作。这里可能出了什么问题?

0 投票
4 回答
5589 浏览

arduino - 在 Arduino ISR 中使用延迟去抖动限位开关

我在 arduino Mega 2650 上连接了一个限位开关,用于运动控制。限位开关的两个常开触点连接到 Arduino 引脚和接地,这样当限位开关接合时,Arduino 引脚会短路到接地。

正如预期的那样,我在这个设置中遇到了弹跳问题。我使用 ISR 中的计数器确认了这一点。最后,我编写了以下代码,该代码似乎可以可靠地识别我的限位开关在任何给定时间点是接合还是分离。

但是,这是我的问题。我来到了这个Arduino 文档页面,上面写着

“由于 delay() 需要中断才能工作,因此如果在 ISR 内调用它将无法工作。”

但是,我确实使用了delay()内部 ISR,它似乎有效,这是怎么回事?我是否有一种情况,目前一切正常,但很容易中断,因为该delay()功能可能会像文档所说的那样在我身上发生故障?

0 投票
2 回答
7127 浏览

arduino - 同一引脚上的多个 Arduino 中断

在下面的代码中,为什么ISR2从不运行?

即使中断是为不同的事件编程的,Arduino是否不允许您在同一个引脚上附加两个中断?

在我的设置中,引脚 19 从运动控制设置中使用的限位开关获取信号。当限位开关接合时,in销获得LOW信号。因此,由于机械弹跳,我首先看到一个FALLING边缘,然后是RISING边缘和边缘。FALLING在这种情况下,我正确处理了去抖动。

然而,想象一下限位开关处于接合状态一段时间,然后我反转电机导致限位开关脱离,这将发送一个RISING边沿,然后是FALLING边沿RISING。我需要忽略这些边缘,因为没有任何危险。编写的ISR2目的是在限位开关脱离时捕获第一个RISING边沿,然后对其进行去抖动,以便FALLING忽略后面的边沿。但是现在ISR2永远不会被调用,我该如何处理这种情况?

PS 我的微控制器是 ATMEGA 2650,它是一个 Arduino Mega 板。

0 投票
2 回答
3425 浏览

javascript - 如何防止在 jQuery 中触发“重复”事件?

我有一个连接到各种事件的事件处理程序,以确保它在各种情况下被触发。

您会注意到定期交互<input type="text" id="myTextbox" />(单击、点击、聚焦等)实际上会导致事件被多次触发。如果正在运行的代码变得非常大,那么这可能会损害性能。我有什么办法可以防止事件被触发这么多次,而不必删除我的大量事件类型?

0 投票
1 回答
470 浏览

android - Android Debounce / TakeLast RxJava 在 OnCompleted() 之后从不接收最后一项

背景

我下面的代码旨在防止每次用户选择图像时上传图像。本质上,我的目标是在开始上传之前创建“冷静”期,以节省用户的电池和数据。

问题

该代码运行良好,除非 Fragment 被销毁 OnComplete 在发出最后一个项目之前取消订阅订阅者,因此永远不会上传最新选择的图像。我想这是正确的行为,但我不知道如何解决它。

我的运气也很差debounce,不得不TakeLast改用。结果是我想要的。

也许 AsyncSubject 会更好,但我不确定前进的方向。谢谢。

0 投票
1 回答
379 浏览

javascript - 使用 debounce 将 React 状态同步到 Meteor 集合

我的 Meteor + React 应用程序中有一个文本框。我想将其值同步到 Mongo 集合。但是,我不想在每次击键后更新集合,只有在用户停止输入几秒钟后才更新。

render()函数中的文本框如下所示:

我将文本框值存储在其中,this.state而不是this.data因为this.data反映了可能尚未更新的 Mongo 集合。

到目前为止,所有这些都有效。

问题:

如果另一个客户端更新集合,我希望文本框显示更新的值。为此,我必须this.state在函数内部进行更新getMeteorData(),但这是不允许的,并且出现错误:“Calling setState inside getMeteorData can result in infinite loop”

现在我有一个解决方法,我手动更新 and 中的文本框值componentDidMount()getMeteorData()但感觉很hackish,我一点也不喜欢它。

有一个更好的方法吗?getMeteorData()如果我保证我会成为一个好孩子并且表现得很好,我是否可以强制更新内部状态?

0 投票
3 回答
2696 浏览

angularjs - 在使用 angular-ui-bootstrap 显示弹出框之前或之后调用回调

我的页面中有一个非常简单的代码剪辑器,我有一个跨度。将鼠标悬停在这个跨度上会显示一个我正在使用 angular-ui-bootstrap 的弹出框。

基本上我已经编写了一个函数,当用户悬停在这个范围上时,它会进行 API 调用。这里的问题是,假设我有 10 个跨度标签,一个在另一个之下,并且用户快速从第一个跨度移动到第 10 个跨度(在此过程中悬停在其间的所有 8 个跨度上),API 调用将为所有跨度触发. 这是我不打算拥有的。

知道如何在这里实现去抖动功能吗?