首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPIO值总是变化的

GPIO值总是变化的
EN

Stack Overflow用户
提问于 2018-07-09 14:02:02
回答 1查看 136关注 0票数 3

第一次使用android系统时,我尝试检测到一个按下按钮的GPIO,但是值总是变化的:

2018-07-09 15:53:00.123 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮真 2018-07-09 15:53:00.134 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮假 2018-07-09 15:53:00.143 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮真 2018-07-09 15:53:00.154 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮假 2018-07-09 15:53:00.163 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮真 2018-07-09 15:53:00.174 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮假 2018-07-09 15:53:00.183 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮真 2018-07-09 15:53:00.194 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮假 2018-07-09 15:53:00.203 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮真 2018-07-09 15:53:00.214 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮假 2018-07-09 15:53:00.223 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮真 2018-07-09 15:53:00.234 1539-1539/com.便检器I/HomeActivity: GPIO更改,按钮假

这是我的覆盆子和面包板

还有我的密码

代码语言:javascript
复制
val TAG = "HomeActivity"
val BUTTON_PIN_NAME = "BCM21"

lateinit var mButtonGpio: Gpio

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    var pioManager = PeripheralManager.getInstance()
    Log.d(TAG, "Available GPIO : " + pioManager.gpioList)

    try{
        mButtonGpio = pioManager.openGpio(BUTTON_PIN_NAME)

        mButtonGpio.setDirection(Gpio.DIRECTION_IN)
        mButtonGpio.setEdgeTriggerType(Gpio.EDGE_BOTH)
        mButtonGpio.setActiveType(Gpio.ACTIVE_HIGH)

        mButtonGpio.registerGpioCallback(mCallback)
    }catch (e: IOException){
        Log.w(TAG, "Error opening GPIO", e)
    }
}

private val mCallback = GpioCallback { gpio ->
    try {
        Log.i(TAG, "GPIO changed, button " + gpio.value)
    } catch (e: IOException) {
        Log.w(TAG, "Error reading GPIO")
    }

    // Return true to keep callback active.
    true
}

我尝试用另一个按钮,用较少或更多的电阻,但每次都有相同的结果。也尝试过Android事物样本,但从未触发按钮点击。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 17:28:25

连接到GPIO上的线路当前处于浮动状态,这意味着它没有连接到任何其他信号。这就是当信号在高值和低值之间自由浮动时所看到的一系列事件。在这种情况下,我们的按钮驱动程序不会触发任何事件,原因是我们已经内置了对忽略在这么短时间内发生的事件的保护。

你需要把你的输入线移到开关的另一边。我绘制了一个正确的电线放置的快速烧成图:

那你的装置为什么不起作用呢?这是因为在内部,这些按钮开关必须将没有内部连接的一组联系人分开。见下图。

因此,面包板一边的连接不是内部连接到另一边的连接。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51247441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档