simplepioのボタン サンプルを実装しようとしています。回路図に示すように接続しました。ボタンを押した後、GPIO コールバックを取得できません。
私が使用しているコードは、サンプルのコードと同じです。「アクティビティの開始」のみがログに出力される例外はありません
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "Starting ButtonActivity");
PeripheralManagerService service = new PeripheralManagerService();
try {
String pinName = BoardDefaults.getGPIOForButton();
mButtonGpio = service.openGpio(pinName);
mButtonGpio.setDirection(Gpio.DIRECTION_IN);
mButtonGpio.setEdgeTriggerType(Gpio.EDGE_FALLING);
mButtonGpio.registerGpioCallback(new GpioCallback() {
@Override
public boolean onGpioEdge(Gpio gpio) {
Log.i(TAG, "GPIO changed, button pressed");
// Return true to continue listening to events
return true;
}
});
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
}
}
私がこれまでに試したこと:
次のコード
python
でボタン プログラムを実行して、回路とボタンが機能することを確認しました。raspbian jessie
#!/usr/bin/env python import os from time import sleep import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(21, GPIO.IN, pull_up_down = GPIO.PUD_UP) while True: if (GPIO.input(21) == False): print("Button Clicked") sleep(0.1)
上記のコードは、ボタンが押されたときに「Button Clicked」を出力します。したがって、PI のボタンと GPIO ピンは問題ではないと確信しています。
- ロギングに問題がないことを確認する
TextView
ために、ボタンがクリックされたときにカウンター値がインクリメントされて表示されるように、元のプログラムを変更してカウンターを含むようにしましTextView
たが、コールバックは受信TextView
されず、更新されませんでした. - 別のエッジ トリガー タイプを試しましたが、onGpioEdge は呼び出されません。
以下は私のセットアップの写真です