为什么按下一个按钮触发处理程序

时间:2017-06-09 14:45:09

标签: raspberry-pi iot android-things

我在Raspberry Pi上运行Android Things 0.4。我正在按照本教程写信:

https://developer.android.com/things/training/first-device/peripherals.html

一旦我按下第一个按钮,我就决定在继续学习本教程的led部分之前添加第二个按钮。我知道硬件设置对于第一个按钮是正确的,所以我在第二个按钮上复制了它,但是由于某种原因我无法理解按钮没有按预期运行。第一个按钮触发两个按钮的事件侦听器。第二个按钮将触发一个方向,并且在按下第二个按钮后按下第一个按钮之前不会再次触发。

我是一位经验丰富的Android开发人员,但对IoT和Things来说却是一位新手。这是我的代码:

06-09 14:33:21.717 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, INC button pressed
06-09 14:33:21.718 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed

Hardware Config 按下第一个按钮1次后,这是我的logcat:

06-09 14:33:21.717 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, INC button pressed
06-09 14:33:21.718 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed
06-09 14:33:58.047 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed

这是在第一个按下第二个按钮之后:

06-09 14:39:06.804 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, INC button pressed
06-09 14:39:06.804 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed
06-09 14:39:08.846 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed
06-09 14:39:11.377 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, INC button pressed
06-09 14:39:11.377 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed
06-09 14:39:11.510 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, INC button pressed
06-09 14:39:11.510 1393-1393/com.maddesa.iottest I/ButtonActivity: GPIO changed, DEC button pressed

如果我按下第一个按钮,然后按第二个按钮4次,然后再次按第一个按钮,它会是什么样子:

+-- app.js
+-- public
|   +-- css
    +-- javascripts
+-- routes
|   +-- index.js
+-- views
|   +-- index.jsx
    +-- layouts
        +-- Default.jsx

就像我说的我对物联网和事物的新手一样,但我只想要两个单独的按钮来持续触发不同的处理程序。

感谢。

3 个答案:

答案 0 :(得分:1)

您需要在电线上放置一些二极管,以防止信号向后移动。当您按下其中一个按钮时,地面会短接另一个按钮。

See this diagram

当您按下顶部按钮时,电流将从地线(红线)向下到达向下按钮的白线。从白色通过电阻,然后通过橙色线回到你的gpio 7。

答案 1 :(得分:0)

这可能是因为RPi输入接收到代码拾取的噪声高/低。似乎你需要去抖动电路(至少RC来自thisOfficial Documentationtutorial。或者尝试将按钮连接到单独的直流电源(一个用于3.3V,另一个用于5V)。另请参阅this讨论。可能需要调整上拉电阻值。并尝试使用下拉(而不是上拉)的原理图,如here

答案 2 :(得分:0)

尝试为每个引脚启用上拉电阻或添加物理上拉电阻。说在引脚和3.3V电源之间连接1K欧姆电阻。

相关问题