C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

Android Things

GPIOピンから現在の状態を読むには, Gpioクラスを利用する.

データのリード

  • GpioActivity.java
    • PeripheralManagerServiceクラスのインスタンスを生成する.
    • PeripheralManagerService#openGpioメソッドで, PIN名を指定してGpioクラスのオブジェクトを取得する.
    • Gpio#setDirectionメソッドで, 入力ビンに設定する.
    • Gpio#setActiveTypeメソッドで, "Low"または"High"のいずれをアクティブに設定する.
    • Gpio#getValueメソッドで, 入力ピンの状態(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 = "BCM21";
  private Gpio mGpio;

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

    PeripheralManagerService manager = new PeripheralManagerService();
    try {
      // GPIOピンオープン
      mGpio = manager.openGpio(PIN_NAME);
      // 入力ピンに設定
      mGpio.setDirection(Gpio.DIRECTION_IN);
      // HighをACTIVEに設定
      mGpio.setActiveType(Gpio.ACTIVE_HIGH)
      // 現在の状態リード
      Log.d(TAG, "Input : " + mGpio.getValue());
    } 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
(1) GPIO21:Low


(2) GPIO21:High




コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます