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

Android Things

PWM制御を行うには, Pwmクラス利用する.

PWM制御

  • PwmActivity.java
    • PeripheralManagerServiceクラスのインスタンスを生成する.
    • PeripheralManagerService#openPwmメソッドで, PIN名を指定してPwmクラスのオブジェクトを取得する.
    • Pwm#setPwmFreuencyHzメソッドで, PWM周期を設定する.
    • Pwm#setPwmDutyCycleメソッドで, デューティ比を設定する.
    • Pwm#getEnabledメソッドで, PWM制御を有効にする.
    • Pwm#closeメソッドでピンを解放する.
package com.moonlight_aska.androidthings.pwm;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.google.android.things.pio.PeripheralManagerService;
import com.google.android.things.pio.Pwm;
import java.io.IOException;

public class PwmActivity extends Activity {
  private static final String TAG = "PwmActivity";
  private static final String PIN_NAME = "PWM0"; // GPIO18
  private Pwm mPwm;

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

    PeripheralManagerService manager = new PeripheralManagerService();
    try {
      // PWMピンオープン
      mPwm = manager.openPwm(PIN_NAME);
      // 周波数の設定
      mPwm.setPwmFrequencyHz(100);
      // Dutyの設定
      mPwm.setPwmDutyCycle(50);
      // PWM信号enable
      mPwm.setEnabled(true);
    } catch (IOException e){
      Log.e(TAG, "Error on PeripheralIO API", e);
    }
  }

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

    if (mPwm != null) {
      try {
        mPwm.close();
      } catch (IOException e) {
        Log.e(TAG, "Error on PeripheralIO API", e);
      } finally {
        mPwm = null;
      }
    }
  }
}
  • 動作例
ボード:Raspberry Pi 3
(1) Freq : 100Hz, Duty : 50%


(2) Freq : 100Hz, Duty : 10%


(3) Freq : 50Hz, Duty : 50%




タグ

コメントをかく


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

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

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



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