gpt4 book ai didi

android - GPIO 值总是变化

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:42 25 4
gpt4 key购买 nike

第一次使用 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

这是我的覆盆子和面包板 breadboard

还有我的代码

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 things sample也是,但永远不会触发按钮点击。

最佳答案

您连接到 GPIO 的电线目前处于悬空状态,这意味着它没有连接到任何其他信号。当信号在高值和低值之间自由 float 时,这就是您看到的一系列事件的原因。在这种情况下,我们的按钮驱动程序不触发任何事件的原因是因为我们有内置的去抖动保护来忽略在如此短的时间跨度内发生的事件。

您需要将输入线移到开关的另一侧。我画了一个正确的电线放置的快速 Fritzing 图:

Correct Wiring

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

Switch Internals

因此,面包板一侧的连接并未在内部连接到另一侧的连接。

关于android - GPIO 值总是变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51247441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com