最終更新:
moonlight_aska 2017年10月27日(金) 21:47:22履歴
- GpioActivity.java
- Gpio#setEdgeTriggerTypeメソッドで, トリガー条件を設定する.
値 | 意味 |
EDGE_NONE | 値の変化を検知しない |
EDGE_RISING | Low->Highへの状態変化を検知 |
EDGE_FALLING | High->Lowへの状態変化を検知 |
EDGE_BOTH | Low->HighまたはHigh->Lowへの状態変化を検知 |
- Gpio#registerGpioCallbackメソッドで, コールバック関数を登録する.
- 状態変化を検知したら, コールバック関数がコールされる.
- 状態変化の検知が不要になった場合, コールバック関数の登録を解除する.
package com.moonlight_aska.androidthings.gpio;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.google.android.things.pio.Gpio;
import com.google.android.things.pio.GpioCallback;
import com.google.android.things.pio.PeripheralManagerService;
import java.io.IOException;
public class GpioActivity extends Activity {
private static final String TAG = "GpioActivity";
private static final String PIN_NAME = "BCM21";
private Gpio mGpio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PeripheralManagerService manager = new PeripheralManagerService();
try {
// ピン指定
mGpio = manager.openGpio(PIN_NAME);
// 入力ピンに設定
mGpio.setDirection(Gpio.DIRECTION_IN);
// HighをACTIVEに設定
mGpio.setActiveType(Gpio.ACTIVE_HIGH);
// 検知する状態変化を設定
mGpio.setEdgeTriggerType(Gpio.EDGE_RISING);
// コールバック登録
mGpio.registerGpioCallback(mGpioCallback);
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
}
}
// コールバック関数
private GpioCallback mGpioCallback = new GpioCallback() {
@Override
public boolean onGpioEdge(Gpio gpio) {
Log.d(TAG, "Edge rising.");
return true;
}
};
@Override
protected void onDestroy() {
super.onDestroy();
try {
if (mGpio != null) {
// コールバック登録解除
mGpio.unregisterGpioCallback(mGpioCallback);
mGpio.close();
}
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
} finally {
mGpio = null;
}
}
}
- 動作例

タグ
コメントをかく