【问题标题】:How can I make my source wait until button release before continuing?如何让我的来源等到按钮释放后再继续?
【发布时间】:2019-04-26 10:15:28
【问题描述】:

如果我按下按钮 1,它会在我的屏幕上显示它已被按下,我希望它等到释放后再执行任何其他操作,类似于切换但不是切换。

我之前尝试过添加延迟,但这并不能完全满足我的需要......我希望它等到发布,而不是等待一段艰难的时间

#include <stdio.h>
#include <wiringPi.h>

int main(void) {
    wiringPiSetupGpio();
    while(1) {
        if(!digitalRead(8) && digitalRead(7)) {
            printf("Button-1 pressed\n");
        }
        if(!digitalRead(7) && digitalRead(8)) {
            printf("Button-2 pressed\n");
        }
    }
    return 0;
}

预期结果:

Button-1 pressed

实际结果:

Button-1 pressed
Button-1 pressed
Button-1 pressed
Button-1 pressed
Button-1 pressed
Button-1 pressed
etc...

【问题讨论】:

  • 没有中断信号释放吗?
  • 假设您没有硬件过滤器,您需要做的第一件事就是处理信号去抖动。

标签: c wiringpi


【解决方案1】:

你必须自己编程这个行为。

int sevenDown = 0;
while(1) {
    if(!sevenDown && digitalRead(7)) {
        sevenDown = 1\n");
    }
    if(sevenDown && !digitalRead(7)) {
        printf("Button-1 pressed\n");
        sevenDown = 0;
    }
}

【讨论】:

    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 2021-10-22
    相关资源
    最近更新 更多