mad*_*esa 6 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来说却是新手.这是我的代码:
public class MainActivity extends Activity {
private static final String TAG = "ButtonActivity";
private static final String INC_BUTTON_PIN_NAME = "BCM4"; // GPIO port wired to the button
private static final String DEC_BUTTON_PIN_NAME = "BCM17"; // GPIO port wired to the button
private Gpio mIncButtonGpio;
private Gpio mDecButtonGpio;
Handler mHandler = new Handler(Looper.getMainLooper());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PeripheralManagerService service = new PeripheralManagerService();
try {
// Step 1. Create GPIO connection.
mIncButtonGpio = service.openGpio(INC_BUTTON_PIN_NAME);
mDecButtonGpio = service.openGpio(DEC_BUTTON_PIN_NAME);
// Step 2. Configure as an input.
mIncButtonGpio.setDirection(Gpio.DIRECTION_IN);
mDecButtonGpio.setDirection(Gpio.DIRECTION_IN);
// Step 3. Enable edge trigger events.
mIncButtonGpio.setEdgeTriggerType(Gpio.EDGE_FALLING);
mDecButtonGpio.setEdgeTriggerType(Gpio.EDGE_FALLING);
// Step 4. Register an event callback.
mIncButtonGpio.registerGpioCallback(mIncCallback);
mDecButtonGpio.registerGpioCallback(mDecCallback);
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
}
}
// Step 4. Register an event callback.
private GpioCallback mIncCallback = new GpioCallback() {
@Override
public boolean onGpioEdge(Gpio gpio) {
Log.i(TAG, "GPIO changed, INC button pressed");
// Step 5. Return true to keep callback active.
return true;
}
};
private GpioCallback mDecCallback = new GpioCallback() {
@Override
public boolean onGpioEdge(Gpio gpio) {
Log.i(TAG, "GPIO changed, DEC button pressed");
// Step 5. Return true to keep callback active.
return true;
}
};
@Override
protected void onDestroy() {
super.onDestroy();
// Step 6. Close the resource
if (mIncButtonGpio != null) {
mIncButtonGpio.unregisterGpioCallback(mIncCallback);
try {
mIncButtonGpio.close();
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
}
}
if (mDecButtonGpio != null) {
mDecButtonGpio.unregisterGpioCallback(mDecCallback);
try {
mDecButtonGpio.close();
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这是在第一个按下第二个按钮之后:
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
Run Code Online (Sandbox Code Playgroud)
如果我按下第一个按钮,然后按第二个按钮,然后再次按第一个按钮,它就像是这样:
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
Run Code Online (Sandbox Code Playgroud)
就像我说的我对物联网和物联网的新手一样,但我只想拥有两个独立的按钮,它们始终触发单独的处理程序.
谢谢.
您需要在接地线上放置一些二极管,以防止信号反向传播。当您按下其中一个按钮时,接地会使另一个按钮短路。
当您按下顶部按钮时,电流将流向地线(红线),向下到达向下按钮的白线。它从白色线穿过电阻器,然后通过橙色线回到 GPIO 7。
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |