5

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);
    }
}

私がこれまでに試したこと:

  1. 次のコード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 ピンは問題ではないと確信しています。

  2. ロギングに問題がないことを確認するTextViewために、ボタンがクリックされたときにカウンター値がインクリメントされて表示されるように、元のプログラムを変更してカウンターを含むようにしましTextViewたが、コールバックは受信 TextViewされず、更新されませんでした.
  3. 別のエッジ トリガー タイプを試しましたが、onGpioEdge は呼び出されません。

以下は私のセットアップの写真です

ここに画像の説明を入力

4

3 に答える 3