第一次使用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更改,按钮假
这是我的覆盆子和面包板

还有我的密码
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事物样本,但从未触发按钮点击。
发布于 2018-07-09 17:28:25
连接到GPIO上的线路当前处于浮动状态,这意味着它没有连接到任何其他信号。这就是当信号在高值和低值之间自由浮动时所看到的一系列事件。在这种情况下,我们的按钮驱动程序不会触发任何事件,原因是我们已经内置了对忽略在这么短时间内发生的事件的保护。
你需要把你的输入线移到开关的另一边。我绘制了一个正确的电线放置的快速烧成图:

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

因此,面包板一边的连接不是内部连接到另一边的连接。
https://stackoverflow.com/questions/51247441
复制相似问题