Androidプログラマへの道 〜 Moonlight 明日香 〜 - GPIOにデータを書く

Android Things

GPIOにデータ出力するには, Gpioクラスを利用する.

データのライト

  • GpioActivity.java
    • PeripheralManagerServiceクラスのインスタンスを生成する.
    • PeripheralManagerService#openGpioメソッドで, PIN名を指定してGpioクラスのオブジェクトを取得する.
    • Gpio#setDirectionメソッドで, 出力ピンに設定する.初期状態はHigh.
意味
DIRECTION_OUT_INITIALLY_LOW初期状態Low
DIRECTION_OUT_INITIALLY_HIGH初期状態High
    • Gpio#setActiveTypeメソッドで, "Low"または"High"のいずれをアクティブに設定する.
    • Gpio#setValueメソッドで, データ(true:active, false:not active)を出力する.
    • Gpio#closeメソッドでピンを解放する.
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.PeripheralManagerService;
import java.io.IOException;

public class GpioActivity extends Activity {
  private static final String TAG = "GpioActivity";
  private static final String PIN_NAME = "BCM6";
  private Gpio mGpio;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    PeripheralManagerService manager = new PeripheralManagerService();
    try {
      // GPIOピンオープン
      mGpio = manager.openGpio(PIN_NAME);
      // 出力ピンに設定(初期状態Low)
      mGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
      // HighをACTIVEに設定
      mGpio.setActiveType(Gpio.ACTIVE_HIGH);
      // 出力ピンにHigh設定
      mGpio.setValue(true);
    } catch (IOException e) {
      Log.e(TAG, "Error on PeripheralIO API", e);
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();

    try {
      if (mGpio != null) {
        // GPIOピンクローズ
        mGpio.close();
      }
    } catch (IOException e) {
      Log.e(TAG, "Error on PeripheralIO API", e);
    } finally {
      mGpio = null;
    }
  }
}
  • 動作例
ボード:Raspberry Pi 3