android-GPIO值始终更改

android-GPIO值始终更改,第1张

概述第一次使用android东西时,我尝试检测到按钮GPIO按钮,但该值始终会变化:2018-07-0915:53:00.1231539-1539/com.pocdetectorI/HomeActivity:GPIOchanged,buttontrue2018-07-0915:53:00.1341539-1539/com.pocdetectorI/HomeActivity:GPIOchanged,buttonfalse20

第一次使用android东西时,我尝试检测到按钮GPIO按钮,但该值始终会变化:

2018-07-09 15:53:00.123 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button true
2018-07-09 15:53:00.134 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button false
2018-07-09 15:53:00.143 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button true
2018-07-09 15:53:00.154 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button false
2018-07-09 15:53:00.163 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button true
2018-07-09 15:53:00.174 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button false
2018-07-09 15:53:00.183 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button true
2018-07-09 15:53:00.194 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button false
2018-07-09 15:53:00.203 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button true
2018-07-09 15:53:00.214 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button false
2018-07-09 15:53:00.223 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button true
2018-07-09 15:53:00.234 1539-1539/com.pocdetector I/HomeActivity: GPIO changed, button false

这是我的覆盆子和面包板

还有我的代码

val TAG = "HomeActivity"val button_PIN_name = "BCM21"lateinit var mbuttonGpio: GpiooverrIDe 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 things sample,但按钮触发从未触发.

解决方法:

您连接到GPIO的导线当前处于悬空状态,这意味着它未连接到任何其他信号.当信号在高值和低值之间自由浮动时,这会生成一系列事件.在这种情况下,按钮驱动程序不会触发任何事件的原因是因为我们具有内置的防反跳保护功能,可以忽略在如此短的时间内发生的事件.

您需要将输入线移动到开关的另一侧.我绘制了正确导线放置的快速Fritzing图:

那么,为什么您的设置不起作用?这是因为在内部这些按钮开关必须将内部未连接的触点分开.请参见下图.

因此,面包板一侧的连接没有内部连接到另一侧的连接.

总结

以上是内存溢出为你收集整理的android-GPIO值始终更改全部内容,希望文章能够帮你解决android-GPIO值始终更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1092122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存