日本語 / English
Fork me on GitHub

Getting Started

Android SDK につきましては現状で konashi 1.0 への対応をしていません。Android でご利用のお客さまは konashi 2.0 のご用意をお願いいたします。
konashi 2.0 は、マクニカオンラインストア などにてご購入いただけます。

Android 6.xからのpermission modelの変更により,当該OSではgetting startedやサンプルコードは正しく動作しません。

ここでは、konashi に搭載されているLEDを点灯させる手順を説明します。

0. 用意するもの

  • konashi 2.0
  • Android Studio
  • BLE搭載のAndroid

1. Android Studio で新規プロジェクトを作成

新規プロジェクトを作成します。

プロジェクト名・保存場所・Android SDKのバージョン入力します。

Minimum SDKは、以下の通りとしてください。

Blank Activityを選択します。

Finishをクリックしてプロジェクトを作成します。

2. konashi Android SDK をプロジェクトに追加(Gradleの設定)

次の1行をbuild.gradle(Module: app)dependenciesに追加します。

compile 'com.uxxu.konashi:konashi-android-sdk:1.1.0'

ツールバーのSync Project with Gradle Filesをクリックし、konashi Android SDKを導入します。

3. パーミッションの追加

次の2行をAndroidManifest.xmlに追加します。

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

4. 画面レイアウトの設定

res/layout/activity_main.xmlに以下のコードを書いてください。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="konashiを探す"
        android:id="@+id/btn_find"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"/>

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOn="ON"
        android:textOff="OFF"
        android:visibility="gone"
        android:id="@+id/tgl_blink"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

5. MainActivityのコードを書く

MainActivity.javaに以下のコードを書いてください。 importについては、 auto-import などを用いて補完してください。

public class MainActivity extends AppCompatActivity {

    private KonashiManager mKonashiManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mKonashiManager = new KonashiManager(getApplicationContext());
        final MainActivity self = this;
        ((ToggleButton)findViewById(R.id.tgl_blink)).setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton v, boolean isChecked) {
                mKonashiManager.digitalWrite(Konashi.LED2, isChecked ? Konashi.HIGH : Konashi.LOW);
            }
        });
        findViewById(R.id.btn_find).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mKonashiManager.find(self);
            }
        });
        mKonashiManager.addListener(new KonashiListener() {
            @Override
            public void onConnect(KonashiManager manager) {
                refreshViews();
                mKonashiManager.pinMode(Konashi.LED2, Konashi.OUTPUT);
            }

            @Override
            public void onDisconnect(KonashiManager manager) {
                refreshViews();
            }

            @Override
            public void onError(KonashiManager manager, BletiaException e) {}

            @Override
            public void onUpdatePioOutput(KonashiManager manager, int value) {}

            @Override
            public void onUpdateUartRx(KonashiManager manager, byte[] value) {}

            @Override
            public void onUpdateBatteryLevel(KonashiManager manager, int level) {}

            @Override
            public void onUpdateSpiMiso(KonashiManager manager, byte[] value) {}
        });

    }

    private void refreshViews() {
        boolean isReady = mKonashiManager.isReady();
        findViewById(R.id.btn_find).setVisibility(isReady ? View.GONE : View.VISIBLE);
        findViewById(R.id.tgl_blink).setVisibility(isReady ? View.VISIBLE : View.GONE);
    }
}

6. Androidデバイスの Bluetooth を有効にする

konashi は通信するために Bluetooth 4.0 (Bluetooth Low Energy) を使用します。ですので、アプリを実行する前にAndroidデバイスのBluetooth機能を有効にします。(すでに有効になっている方はこの項目をスキップしてください)

Androidデバイスの「設定」を開き、表示されたリストの中の「Bluetooth」を「ON」にします。

7. konashiをAndroidデバイスから動かす

用意は整いました!

konashiにコイン電池を差し込むかmicroUSBケーブルを接続してkonashiの電源を供給し、プロジェクトをRunしてください。

アプリが起動したら「KONASHIを探す」ボタンを押してみましょう。

すると接続できるkonashiのリストが表示されるので、接続するkonashiを選択してください。

(konashi2-f0????、という名前が表示されるはずです。{ ???? = ラベルに記載の4桁の16進数 } )

しばらくして「OFF」ボタンが表示されれば接続成功です。

「OFF」ボタンをタップして「ON」ボタンに変わり、konashiのLED2が点灯すれば成功です。

次にやることは

DocumentsAPI Reference に機能や関数の詳しい説明がありますのでご覧ください。

また、konashi-android-sdk/samples にすべての機能を網羅したサンプルがありますので、それを元にkonashiを触っていくことをおすすめします。

API Reference

Constants

Pin name

Konashi.PIO0 0 デジタルI/Oの0ピン目
Konashi.PIO1 1 デジタルI/Oの1ピン目
Konashi.PIO2 2 デジタルI/Oの2ピン目
Konashi.PIO3 3 デジタルI/Oの3ピン目
Konashi.PIO4 4 デジタルI/Oの4ピン目
Konashi.PIO5 5 デジタルI/Oの5ピン目
Konashi.PIO6 6 デジタルI/Oの6ピン目
Konashi.PIO7 7 デジタルI/Oの7ピン目
Konashi.S1 0 タクトスイッチ(ジャンパ をショートすることで、 デジタルI/Oの0ピン目 に接続されます)
Konashi.LED2 1 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの1ピン目 に接続されます)
Konashi.LED3 2 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの2ピン目 に接続されます)
Konashi.LED4 3 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの3ピン目 に接続されます)
Konashi.LED5 4 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの4ピン目 に接続されます)
Konashi.AIO0 0 アナログI/Oの0ピン目
Konashi.AIO1 1 アナログI/Oの1ピン目
Konashi.AIO2 2 アナログI/Oの2ピン目
Konashi.I2C_SDA 6 I2CのSDAのピン(デジタルI/Oの6ピン目)
Konashi.I2C_SCL 7 I2CのSCLのピン(デジタルI/Oの7ピン目)

PIO

Konashi.HIGH 1 ピンの出力をHIGH(3V)にする
Konashi.LOW 0 ピンの出力をLOW(0V)にする
Konashi.TRUE 1 ピンの出力をHIGH(3V)にする
Konashi.FALSE 0 ピンの出力をLOW(0V)にする
Konashi.OUTPUT 1 ピンの入出力設定を出力に
Konashi.INPUT 0 ピンの入出力設定を入力に
Konashi.PULLUP 1 ピンのプルアップ設定をON
Konashi.NO_PULLS 0 ピンのプルアップ設定をOFF

AIO

Konashi.ANALOG_REFERENCE 1300 アナログ入出力の基準電圧 1300mV

PWM

Konashi.PWM_DISABLE 0 指定したPIOをPWMとして使用しない(デジタルI/Oとして使用)
Konashi.PWM_ENABLE 1 指定したPIOをPWMとして使用する
Konashi.PWM_ENABLE_LED_MODE 2 指定したPIOをLEDモードとしてPWMとして使用する
Konashi.PWM_LED_PERIOD 10000 LEDモード時のPWMの周期は10ms

UART

Konashi.UART_DISABLE 0 UART無効
Konashi.UART_ENABLE 1 UART有効
Konashi.UART_RATE_9K6 0x0028 9600bps
Konashi.UART_RATE_19K2 0x0050 19200bps
Konashi.UART_RATE_38K4 0x00a0 38400bps
Konashi.UART_RATE_57K6 0x00f0 57600bps
Konashi.UART_RATE_76K8 0x0140 76800bps
Konashi.UART_RATE_115K2 0x01e0 115200bps
Konashi.UART_DATA_MAX_LENGTH 18 UARTで一度に送信できるバイト数(for 2.0)

I2C

Konashi.I2C_DISABLE 0 I2Cを無効にする
Konashi.I2C_ENABLE 1 I2Cを有効にする(100kbpsモードがデフォルト)
Konashi.I2C_ENABLE_100K 1 100kbpsモードでI2Cを有効にする
Konashi.I2C_ENABLE_400K 2 400kbpsモードでI2Cを有効にする
Konashi.I2C_START_CONDITION 1 スタートコンディション
Konashi.I2C_STOP_CONDITION 0 ストップコンディション
Konashi.I2C_RESTART_CONDITION 2 リスタートコンディション
Konashi.I2C_DATA_MAX_LENGTH 19 I2Cで一度に送受信できる最大バイト数

Function return

Konashi.SUCCESS 0 成功時
Konashi.FAILURE -1 失敗時

Base

initialize

Description

konashiの初期化を行います。

一番最初に表示されるActivityのonCreateなど、konashiを使う前に必ず initialize をしてください。

Syntax

Konashi.initialize((Context)context);

Parameters

context Context konashiを使用するときのActivity

Returns

なし

close

Description

konashiとの接続を解除します。

Syntax

Konashi.close();

Parameters

なし

Returns

なし

getManager

Description

KonashiManagerのシングルトンオブジェクトを取得します。

1つしかkonashiを使わない場合や初心者はこちらを使うと簡単です。

複数台konashiを接続する場合は、それぞれのデバイスに対してKonashiManagerのインスタンスを作成してください。

※注:以降、konashiのインスタンスをmKonashiManagerとして説明します。

Syntax

Konashi.getManager();

Parameters

なし

Returns

KonashiManagerのシングルトンオブジェクト

Example

KonashiManager mKonashiManager = Konashi.getManager();

find

Description

Android周辺のkonashiを探します。

この関数を実行した後、周りにあるkonashiのリストが出現します。リストに列挙されているkonashiのひとつをクリックすると、konashiに自動的に接続されます。その後、KonashiConnectionEvent.CONNECTEDKonashiConnectionEvent.READY のイベントが発火するので、事前にこれらのイベントを addListener でキャッチできるようにしておいてください。

Syntax

mKonashiManager.find((Activity)activity, (boolean)isShowKonashiOnly=true);

Parameters

activity Activity BLEデバイスリストを表示する先のActivity
isShowKonashiOnly boolean (Optional) konashiだけを表示する(true)か、すべてのBLEデバイスを表示する(false)か。未指定時はtrue

Returns

なし

Example

現在のアクティビティ(current_activity)に周囲のkonashiの一覧を表示する

mKonashiManager.find(current_activity, true);

findWithName

Description

konashiの名前を指定して接続します。

find の場合はkonashiのリストが出現しますが、findWithName を実行した場合はリストが出ずに自動的に接続されます。

名前に関しては、find を実行することによって下から出現するリストでリストアップされる konashi#4-0452 などの文字列です。konashi#*-**** の*部分の数字は、konashiの緑色チップのシール上に記載されている番号と同じです。

もし、指定した名前が見つからない場合は KonashiConnectionEvent.PERIPHERAL_NOT_FOUND が発火されます。

Syntax

mKonashiManager.findWithName((Activity)activity, (String)name);

Parameters

activity Activity BLEデバイスリストを表示する先のActivity
name String 接続したいkonashiの名前。例:"konashi#4-0452"

Returns

なし

Example

konashi#4-0452 のkonashiを探して接続する

mKonashiManager.findWithName(activity, "konashi#4-0452");

disconnect

Description

konashiとの接続を解除します。

Syntax

mKonashiManager.disconnect();

Parameters

なし

Returns

なし

isConnected

Description

konashiと接続中か否かを返します。

KonashiConnectionEvent.CONNECTED のイベントが発火するタイミングでtrueとなります。それ以前はfalseです。

Syntax

mKonashiManager.isConnected();

Parameters

なし

Returns

boolean

isReady

Description

konashiが使える状態になっているか否かを返します。

KonashiConnectionEvent.READY のイベントが発火するタイミングでtrueとなります。それ以前はfalseです。

Syntax

mKonashiManager.isReady();

Parameters

なし

Returns

boolean

getPeripheralName

Description

接続中のkonashiの名前を返します。

konashiに接続していない状態で実行すると空文字 "" が返ります。

Syntax

mKonashiManager.getPeripheralName();

Parameters

なし

Returns

String 接続中のkonashiの名前(例: konashi#4-0452)

Example

String name = mKonashiManager.getPeripheralName();
Log.d("Konashi", name);

Events

addListener

Description

konashiイベントリスナを追加します。

konashiとAndroidは BLE で繋がっているため、konashiの状態やピンの状態は非同期で取得することになります。

たとえば、AIOピンの電圧を取得するには、 analogReadRequest でkonashiにリクエストを送り、KonashiAnalogEvent.UPDATE_ANALOG_VALUE という取得完了イベントを受信した後にAIOピンの電圧を参照できるようになります。

どのようなイベントがあるかは Constants / Events を参照してください。

Syntax

mKonashiManager.addListener((KonashiListener)listener);

Parameters

listener KonashiListener 追加するイベントリスナを指定します。詳細は Event Listeners を参照してください。

Returns

なし

Example

konashiと接続したらCONNECTEDと表示する

KonashiListener listener = new KonashiListener() {
    @Override
    public void onConnect(KonashiManager manager) {
      Log.d("Konashi", "CONNECTED");
    }

    @Override
    public void onDisconnect(KonashiManager manager) {}

    @Override
    public void onError(KonashiManager manager, BletiaException e) {}

    @Override
    public void onUpdatePioOutput(KonashiManager manager, int value) {}

    @Override
    public void onUpdateUartRx(KonashiManager manager, byte[] value) {}

    @Override
    public void onUpdateBatteryLevel(KonashiManager manager, int level) {}
};
mKonashiManager.addListener(listener);

removeListener

Description

addListener で追加したkonashiイベントリスナを削除します。

Syntax

mKonashiManager.removeListener((KonashiListener)listener);

Parameters

listener KonashiListener 削除するイベントリスナを指定します。詳細は Event Listeners を参照してください。

Returns

なし

Example

konashiと接続したらCONNECTEDと表示し、イベントリスナを削除する

KonashiListener listener = new KonashiListener() {
    @Override
    public void onConnect(KonashiManager manager) {
      Log.d("Konashi", "CONNECTED");
      mKonashiManager.removeListener(this);
    }

    @Override
    public void onDisconnect(KonashiManager manager) {}

    @Override
    public void onError(KonashiManager manager, BletiaException e) {}

    @Override
    public void onUpdatePioOutput(KonashiManager manager, int value) {}

    @Override
    public void onUpdateUartRx(KonashiManager manager, byte[] value) {}

    @Override
    public void onUpdateBatteryLevel(KonashiManager manager, int level) {}
};
mKonashiManager.addListener(listener);
mKonashiManager.addListener(listener);

removeAllListeners

Description

addListener で追加したkonashiイベントリスナを全て削除します。

Syntax

mKonashiManager.removeAllListeners();

Parameters

なし

Returns

なし

Event Listeners

KonashiListener

Description

konashiとの接続/切断など、基本的なイベントを扱うイベントリスナです。

Syntax

private final KonashiListener mKonashiListener = new KonashiListener() {
      //konashiと接続した時
      @Override
      public void onConnect(KonashiManager manager) {}

      //findWithNameでkonashiが見つからない時
      @Override
      public void onFindNoDevice(KonashiManager manager) {}

      //konashiと切断した時
      @Override
      public void onDisconnect(KonashiManager manager) {}

      //konashiと違うものに接続した時
      @Override
      public void onConnectOtherDevice(KonashiManager manager) {}

      //エラーが発生した時
      @Override
      public void onError(KonashiManager manager, BletiaException e) {}

      //PIOピンの値が変化した時
      @Override
      public void onUpdatePioOutput(KonashiManager manager, int value) {}

      //RX端子の値が変化した時
      @Override
      public void onUpdateUartRx(KonashiManager manager, byte[] value) {}

      //konashiのバッテリーレベルが変化した時
      @Override
      public void onUpdateBatteryLevel(KonashiManager manager, int level) {}

      //SPIのMISOピンが受信した時
      @Override
      public void onUpdateSpiMiso(KonashiManager manager, byte[] value) {}
};

Promise

done

Description

PromiseオブジェクトのActionが成功したときに実行するcallbackの設定を行います。 詳細はjdeferred/jdeferred · GitHubをご覧ください。

Syntax

//pmはPromiseオブジェクト
pm.done((DoneCallback<T>)callback);

Parameters

callback DoneCallback 設定するcallback。ジェネリクスTは受け取る結果の型、すなわちPromiseオブジェクトのジェネリクスの1番目の型

Returns

Promise<T, BletiaException, Object>

Example

LED2をOUTPUTにする。成功した場合Succeededと表示する。

mKonashiManager.pinMode(Konashi.LED2, Konashi.OUTPUT).done(new DoneCallback<BluetoothGattCharacteristic>() {
    @Override
    public void onDone(BluetoothGattCharacteristic result) {
        Log.d("Konashi", "Succeeded");
    }
});

fail

Description

PromiseオブジェクトのActionが失敗したときに実行するcallbackの設定を行います。 詳細はjdeferred/jdeferred · GitHubをご覧ください。

Syntax

//pmはPromiseオブジェクト
pm.fail((FailCallback<T>)callback);

Parameters

callback FailCallback 設定するcallback。ジェネリクスTは受け取る結果の型、すなわちPromiseオブジェクトのジェネリクスの1番目の型

Returns

Promise<T, BletiaException, Object>

Example

LED2をOUTPUTにする。失敗した場合Failedと表示する。

mKonashiManager.pinMode(Konashi.LED2, Konashi.OUTPUT).fail(new FailCallback<BluetoothGattCharacteristic>() {
    @Override
    public void onFail(BluetoothGattCharacteristic result) {
        Log.d("Konashi", "Failed");
    }
});

then

Description

PromiseオブジェクトのActionが成功/失敗したときに実行するcallbackの設定を行います。 詳細はjdeferred/jdeferred · GitHubをご覧ください。

Syntax

//pmはPromiseオブジェクト
pm.then((DoneCallback<T>)callback1);
pm.then((DoneCallback<T>)callback1, (FailCallback<T>)callback2);
pm.then((DonePipe)pipe);

Parameters

callback1 DoneCallback 成功した際に呼ばれるcallback。ジェネリクスTは受け取る結果の型、すなわちPromiseオブジェクトのジェネリクスの1番目の型
callback2 FailCallback (Optional)失敗した際に呼ばれるcallback。ジェネリクスTは受け取る結果の型、すなわちPromiseオブジェクトのジェネリクスの1番目の型
pipe DonePipe 設定するpipe

Returns

Promise<T, BletiaException, Object>

Example

LED2をOUTPUTにする。成功した場合Succeededと表示し失敗した場合Failedと表示する。

mKonashiManager.pinMode(Konashi.LED2, Konashi.OUTPUT).then(new DoneCallback<BluetoothGattCharacteristic>() {
    @Override
    public void onDone(BluetoothGattCharacteristic result) {
        Log.d("Konashi", "Succeeded");
    }
}, new FailCallback<BluetoothGattCharacteristic>() {
    @Override
    public void onFail(BluetoothGattCharacteristic result) {
        Log.d("Konashi", "Failed");
    }
});

Digital I/O (PIO)

pinMode

Description

PIOのピンを入力として使うか、出力として使うかの設定を行います。

Syntax

mKonashiManager.pinMode((int)pin, (int)mode);

Parameters

pin int 設定するPIOのピン名。指定可能なピン名は Constants / Pin name をご覧ください。
mode int ピンに設定するモード。Konashi.INPUTKonashi.OUTPUT が設定できます。詳細は Constants / PIO をご覧ください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

LED2をOUTPUTにする。成功した場合Succeededと表示し失敗した場合Failedと表示する。

mKonashiManager.pinMode(Konashi.LED2, Konashi.OUTPUT).done(new DoneCallback<BluetoothGattCharacteristic>() {
    @Override
    public void onDone(BluetoothGattCharacteristic result) {
        Log.d("Konashi", "Succeeded");
    }
}).fail(new FailCallback<BluetoothGattCharacteristic>() {
    @Override
    public void onFail(BluetoothGattCharacteristic result) {
        Log.d("Konashi", "Failed");
    }
});

pinModeAll

Description

PIOのピンを入力として使うか、出力として使うかの設定を行います。

この関数での引数は、PIO0〜PIO7の入出力設定を8bit(1byte)で表現します。bitとピンの対応は以下です。

image

それぞれのビットでは、入力設定を0、出力設定を1として表現します。

例えばこの関数で、PIO0(S1)を入力に、それ以外のPIOを出力に設定する場合、入力=0、出力=1なので、以下のように11111110(254)と設定します。

mKonashiManager.pinModeAll(254);

詳細は Core functions / Digital をご覧ください。

Syntax

mKonashiManager.pinModeAll((int)modes);

Parameters

modes int PIO0 〜 PIO7 の計8ピンの設定。OUTPUT を1、INPUT を0として 0x00 〜 0xFF を指定してください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

PIOすべてのピンをOUTPUTにする

mKonashiManager.pinModeAll(0xFF);

pinPullup

Description

PIOのピンをプルアップするかの設定を行います。

初期状態では、PIOはプルアップされていません。詳細は Core Functions / Digital の項をご覧ください。

Syntax

mKonashiManager.pinPullup((int)pin, (int)pullup);

Parameters

pin int 設定するPIOのピン名。指定可能なピン名は Constants / Pin name をご覧ください。
pullup int ピンをプルアップするかの設定。Konashi.PULLUPKonashi.NO_PULLS が設定できます。詳細は Constants / PIO 定数をご覧ください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

PIO7をプルアップする

mKonashiManager.pinPullup(Konashi.PIO7, Konashi.PULLUP);

pinPullupAll

Description

PIOのピンをプルアップするかの設定を行います。

この関数での引数は、PIO0〜PIO7のプルアップ設定を8bit(1byte)で表現します。bitとピンの対応は以下です。

image

それぞれのビットでは、プルアップ無効を0、プルアップ有効を1として表現します。

例えばこの関数で、PIO0(S1)をプルアップし、それ以外はプルアップ無効にする場合、以下のように00000001(1)と設定します。

mKonashiManager.pinPullupAll(1);

詳細は Core Functions / Digital の項をご覧ください。

Syntax

mKonashiManager.pinPullupAll(pullups);

Parameters

pullups int PIO0 〜 PIO7 の計8ピンのプルアップの設定。0x00 〜 0xFF を指定してください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

PIOのすべてのピンをプルアップする

mKonashiManager.pinPullupAll(0xFF);

digitalRead

Description

PIOの特定のピンの入力状態を取得します。

ピンの入力状態を取得する前に、必ず pinMode, pinModeAll でピンのモードを入力にしておいてください。出力モードの場合は正しい入力状態を取得することはできません。

詳細は Core functions / Digital をご覧ください。

Syntax

mKonashiManager.digitalRead(pin);

Parameters

pin int PIOのピン名。指定可能なピン名は Constants / Pin name をご覧ください。

Returns

Konashi.HIGH もしくは Konashi.LOW

Example

S1の入力の状態を取得する

mKonashiManager.digitalRead(Konashi.S1);

digitalReadAll

Description

PIOのすべてのピンの状態を取得します。

この関数での戻り値は、PIO0〜PIO7の入力状態が8bit(1byte)で表現されます。bitとピンの対応は以下です。

image

それぞれのビットで、0はLOW(0V)を、1はHIGH(3V)を表現しています。

例えば、PIO0(S1)がHIGH、それ以外がLOWの状態だった時にこの関数を実行すると、00000001(1)が戻り値として返ってきます。

int value = mKonashiManager.digitalReadAll();
Log.d("Konashi", String.valueOf(value)); //1

詳細は Core functions / Digital をご覧ください。

Syntax

mKonashiManager.digitalReadAll();

Parameters

なし

Returns

int PIOの8ピンの入力情報(0x00〜0xFF)

Example

PIOのすべてのピンの入力状態を取得する。

mKonashiManager.digitalReadAll();

digitalWrite

Description

PIOの特定のピンの出力状態を設定します。

詳細は Core functions / Digital をご覧ください。

Syntax

Konashi.digitalWrite((int)pin, (int)value);

Parameters

pin int PIOのピン名。指定可能なピン名は Constants / Pin name をご覧ください。
value int 設定するPIOの出力状態。Konashi.HIGH もしくは Konashi.HIGH が指定可能です。詳細は Constants / PIO をご覧ください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

LED2をHIGHにする

mKonashiManager.digitalWrite(Konashi.LED2, Konashi.HIGH);

digitalWriteAll

Description

PIOの特定のピンの出力状態を設定します。

この関数での引数は、PIO0〜PIO7の出力状態が8bit(1byte)で表現されます。bitとピンの対応は以下です。

image

それぞれのビットで、0はLOW(0V)を、1はHIGH(3V)を表現しています。

例えば、この関数でPIO3(LED4)をHIGH、それ以外をLOWの状態にする場合、00001000(8)を引数に設定します。

mKonashiManager.digitalWriteAll(8);

詳細は Core functions / Digital をご覧ください。

Syntax

mKonashiManager.digitalWriteAll(value);

Parameters

value int PIO0〜PIO7の出力に設定する値。 0x00 〜 0xFF が設定可能です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

PIOのすべてのピンをHIGHにする

mKonashiManager.digitalWriteAll(0xFF);

Analog I/O (AIO)

analogRead

Description

AIO の指定のピンの入力電圧を取得します。この関数で取得できる値は前回の analogReadRequest 時に取得した電圧です。

konashiのAIOピンの電圧を取得したい場合は、まず analogReadRequest で konashi に取得リクエストを送り、 KonashiAnalogEvent.UPDATE_ANALOG_VALUE もしくは Constants / Events に定義されている入力電圧取得完了イベントを addListener でキャッチした後、 この関数で値を取得できます。 イベントリスナにはKonashiAnalogListenerを登録します。

アナログの機能に関しては、 Core functions / Analog をご覧ください。

Syntax

mKonashiManager.analogRead((int)pin);

Parameters

pin AIOのピン名。指定可能なピン名は Konashi.AIO0, Konashi.AIO1, Konashi.AIO2 です。詳細は Constants / Pin name をご覧ください。

Returns

Promise<Integer, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。
callbackには結果として0 〜 1300 までの、mV単位の値が渡されます。

Example

AIO0の入力電圧を取得する

mKonashiManager.addListener(new KonashiConnectionListener() {
    @Override
    public void onNotFoundPeripheral() {}

    @Override
    public void onConnected() {}

    @Override
    public void onDisconnected() {}

    @Override
    public void onReady() {
        mKonashiManager.analogReadRequest(Konashi.AIO0);
    }

    @Override
    public void onCancelSelectKonashi() {}
});

mKonashiManager.addListener(new KonashiAnalogListener(){
    @Override
    public void onUpdateAnalogValue(int pin, int value) {}

    @Override
    public void onUpdateAnalogValueAio0(int value) {
        Log.d("READ_AIO0", String.valueOf(value));
    }

    @Override
    public void onUpdateAnalogValueAio1(int value) {}

    @Override
    public void onUpdateAnalogValueAio2(int value) {}  
});

mKonashiManager.find(current_activity);

analogWrite

Coming Soon

PWM

pwmMode

Description

PIO の指定のピンを PWM として使用する/しないを設定します。

PIO のいずれのピンも PWMモード に設定できます。

Konashi.PWM_ENABLE モードを指定する場合は、事前に pwmPeriod, pwmDuty で周期とONになる時間を指定してください。

PWM の詳細は Core functions / PWM をご覧ください。

Syntax

mKonashiManager.pwmMode((int)pin, (int)mode);

Parameters

pin int PWMモードの設定をするPIOのピン名。Konashi.PIO0Konashi.PIO7 が設定可能です。
mode int 設定するPWMのモード。Konashi.PWM_DISABLE , Konashi.PWM_ENABLE, Konashi.PWM_ENABLE_LED_MODE が設定できます。詳細は Constants / PWM をご覧ください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

LED2を周期10ms、デューティ5msのPWMにする。

mKonashiManager.pwmMode(Konashi.LED2, Konashi.PWM_ENABLE);
mKonashiManager.pwmPeriod(Konashi.LED2, 10000);
mKonashiManager.pwmDuty(Konashi.LED2, 5000);

pwmPeriod

Description

指定のピンのPWM周期を設定します。

周期の単位はマイクロ秒(us)で指定してください。

PWM の詳細は Core functions / PWM をご覧ください。

Syntax

mKonashiManager.pwmPeriod((int)pin, (int)period);

Parameters

pin int PIOのピン名。Konashi.PIO0Konashi.PIO7 が設定可能です。
period int 周期。単位はマイクロ秒(us)で32bitで指定してください。最大232us = 71.5分です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

LED2の周期を10msにセットする

mKonashiManager.pwmPeriod(Konashi.LED2, 10000);

pwmDuty

Description

指定のピンのPWMのデューティ(ONになっている時間)を設定します。

単位はマイクロ秒(us)で指定してください。

PWM の詳細は Core functions / PWM をご覧ください。

Syntax

mKonashiManager.pwmDuty((int)pin, (int)duty);

Parameters

pin int PIOのピン名。Konashi.PIO0Konashi.PIO7 が設定可能です。
duty int デューティ。単位はマイクロ秒(us)で32bitで指定してください。最大232us = 71.5分です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

LED2のデューティを5msにセットする

Konashi.pwmDuty(Konashi.LED2, 5000);

pwmLedDrive

Description

指定のピンのLEDの明るさを0%〜100%で指定します。

pwmLedDrive 関数を使うには pwmModeKonashi.PWM_ENABLE_LED_MODE を指定してください。

PWM の詳細は Core functions / PWM をご覧ください。

Syntax

mKonashiManager.pwmLedDrive((int)pin, (double|float)dutyRatio);

Parameters

pin int PIOのピン名。Konashi.PIO0Konashi.PIO7 が設定可能です。
dutyRatio double|float LEDの明るさ。0.0〜100.0 または 0.0F〜100.0F を指定してください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

LED2の明るさを30%にする

mKonashiManager.pwmMode(Konashi.LED2, Konashi.PWM_ENABLE_LED_MODE);
mKonashiManager.pwmLedDrive(Konashi.LED2, 30.0);

UART

uartMode

Description

UART の有効/無効を設定します。

有効にする前に、uartBaudrate でボーレートを設定しておいてください。

UART の詳細は Core functions / Communication - UART をご覧ください。

Syntax

Konashi.uartMode((int)mode);

Parameters

mode int 設定するUARTのモード。Konashi.UART_DISABLE , Konashi.UART_ENABLE が設定可能です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

UARTを有効にする

mKonashiManager.uartMode(Konashi.UART_ENABLE);

uartBaudrate

Description

UART の通信速度を設定します。

現在は 2400bps か 9600bps が設定できます。

UART の詳細は Core functions / Communication - UART をご覧ください。

Syntax

mKonashiManager.uartBaudrate((int)baudrate);

Parameters

baudrate int UARTの通信速度。Konashi.UART_RATE_9K6, Konashi.UART_RATE_19K2, Konashi.UART_RATE_38K4, Konashi.UART_RATE_57K6, Konashi.UART_RATE_76K8, Konashi.UART_RATE_115K2 が設定可能です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

UARTの通信速度を9600bpsにする

mKonashiManager.uartBaudrate(Konashi.UART_RATE_9K6);

uartWrite

Description

UART でデータを1バイト送信します。

UART の詳細は Core functions / Communication - UART をご覧ください。

Syntax

mKonashiManager.uartWrite((byte[]|String) data);

Parameters

data byte[]|String 送信するバイト列または文字列

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

'A'という文字をUARTで送る

mKonashiManager.uartWrite("A");

I2C

i2cMode

Description

I2C を有効/無効を設定します。

I2C で通信できる速度として 100kbps と 400kbps がありmode引数で指定します。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.i2cMode((int)mode);

Parameters

mode int 設定するI2Cのモード。Konashi.I2C_DISABLE, Konashi.I2C_ENABLE, Konashi.I2C_ENABLE_100K, Konashi.I2C_ENABLE_400K が設定できます。Konashi.I2C_ENABLEKonashi.I2C_ENABLE_100K は等価です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

I2C を100kbps(デフォルト)の通信速度で有効にする。

mKonashiManager.i2cMode(Konashi.I2C_ENABLE);

i2cStartCondition

Description

I2C のスタートコンディションを発行します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.i2cStartCondition();

Parameters

なし

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

i2cStartConditionPipe

Description

I2C のスタートコンディションを発行するpipeを返します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.<T>i2cStartConditionPipe();

Parameters

なし

Returns

DonePipe<T, BluetoothGattCharacteristic, BletiaException, Void> 詳細はPromise をご覧ください。

i2cRestartCondition

Description

I2C のリスタートコンディションを発行します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.i2cRestartCondition();

Parameters

なし

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

i2cRestartConditionPipe

Description

I2C のリスタートコンディションを発行するpipeを返します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.<T>i2cRestartConditionPipe();

Parameters

なし

Returns

DonePipe<T, BluetoothGattCharacteristic, BletiaException, Void> 詳細はPromise をご覧ください。

i2cStopCondition

Description

I2C のストップコンディションを発行します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.i2cStopCondition();

Parameters

なし

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

i2cStopConditionPipe

Description

I2C のストップコンディションを発行するpipeを返します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.<T>i2cStopConditionPipe();

Parameters

なし

Returns

DonePipe<T, BluetoothGattCharacteristic, BletiaException, Void> 詳細はPromise をご覧ください。

i2cSendCondition

Description

I2C のコンディションを発行します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.i2cSendCondition((int)condition);

Parameters

condition int 設定するコンディション。Konashi.I2C_START_CONDITION, Konashi.I2C_STOP_CONDITION, Konashi.I2C_RESTART_CONDITION が設定可能です。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

i2cSendConditionPipe

Description

I2C のコンディションを発行するpipeを返します。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.<T>i2cSendConditionPipe((int)condition);

Parameters

condition int 設定するコンディション。Konashi.I2C_START_CONDITION, Konashi.I2C_STOP_CONDITION, Konashi.I2C_RESTART_CONDITION が設定可能です。

Returns

DonePipe<T, BluetoothGattCharacteristic, BletiaException, Void> 詳細はPromise をご覧ください。

i2cRead

Description

I2Cで指定したアドレスからデータを読み込みます。

Syntax

mKonashiManager.i2cRead((int)length, (byte)address);

Parameters

length int 読み込むデータ(byte)の長さ。最大Konashi.I2C_DATA_MAX_LENGTHまで設定可能です。
address byte 読み込み先アドレス

Returns

Promise<byte[], BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

i2cReadPipe

Description

I2Cで指定したアドレスからデータを読み込むpipeを返します。 Tはこのpipeを与えるPromiseオブジェクトのジェネリクスの1番目の型です。

Syntax

mKonashiManager.<T>i2cReadPipe((int)length, (byte)address);

Parameters

length int 読み込むデータ(byte)の長さ。最大Konashi.I2C_DATA_MAX_LENGTHまで設定可能です。
address byte 読み込み先アドレス

Returns

DonePipe<T, byte[], BletiaException, Void> 詳細はPromise をご覧ください。

i2cWrite

Description

I2C で指定したアドレスにデータを書き込みます。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.i2cWrite((int)length, (byte[])data, (byte)address);

Parameters

length int 書き込むデータ(byte)の長さ。最大Konashi.I2C_DATA_MAX_LENGTHまで設定可能です。
data byte[] 書き込むデータ
address byte 書き込み先アドレス

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

アドレス0x45に'A'というデータを書き込む

mKonashiManager.i2cWrite(1, "A".getBytes(), 0x45);

i2cWritePipe

Description

I2C で指定したアドレスにデータを書き込むpipeを返します。 Tはこのpipeを与えるPromiseオブジェクトのジェネリクスの1番目の型です。

事前に i2cMode で I2C を有効にしておいてください。

I2C の詳細は Core functions / Communication - I2C をご覧ください。

Syntax

mKonashiManager.<T>i2cWritePipe((int)length, (byte[])data, (byte)address);

Parameters

length int 書き込むデータ(byte)の長さ。最大Konashi.I2C_DATA_MAX_LENGTHまで設定可能です。
data byte[] 書き込むデータ
address byte 書き込み先アドレス

Returns

DonePipe<T, BluetoothGattCharacteristic, BletiaException, Void> 詳細はPromise をご覧ください。

SPI

spiConfig

Description

SPIのモードを設定します。

SPIで設定出来るのは、動作モードと動作速度、ビットオーダーになります。

Syntax

mKonashiManager.spiConfig((int)mode, (int)byteOrder,(int)speed);

Parameters

mode int SPI通信のモードを設定する。 KOSHIAN_SPI_MODE_CPOL0_CPHA0, KOSHIAN_SPI_MODE_CPOL0_CPHA1, KOSHIAN_SPI_MODE_CPOL1_CPHA0, KOSHIAN_SPI_MODE_CPOL1_CPHA1 が設定可能です。
speed int 設定するSPIのモード。KOSHIAN_SPI_SPEED_200K ~ KOSHIAN_SPI_SPEED_6M, を設定できます。詳細は Constants / SPI をご覧ください。
bitOrder int 設定するSPIのモード。KOSHIAN_SPI_BIT_ORDER_LSB_FIRST , KOSHIAN_SPI_BIT_ORDER_MSB_FIRST が設定できます。詳細は Constants / SPI をご覧ください。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

SPI通信のモードを通信速度200kbps、クロックを正論理にし、0から1に切り替わるタイミングでデータを取り込むようにする。

mKonashiManager.spiConfig(Konashi.SPI_MODE_ENABLE_CPOL0_CPHA0,Konashi.SPI_BIT_ORDER_LITTLE_ENDIAN,Konashi.SPI_SPEED_1M)

spiRead

Description

SPI経由でデータを読み込みます。

Syntax

mKonashiManager.spiRead()

Parameters

なし

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

spiWrite

Description

SPI経由でデータを書き込みます。

Syntax

mKonashiManager.spiWrite(byte[] data);

Parameters

data byte[] SPI通信で送信するデータ。

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Hardware Control

reset

Description

konashi を再起動します。

konashi が再起動すると、自動的にBLEのコネクションは切断されます。

Syntax

mKonashiManager.reset();

Parameters

なし

Returns

Promise<BluetoothGattCharacteristic, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。

Example

konashi を再起動する

mKonashiManager.reset();

getBatteryLevel

Description

konashi のバッテリ残量を取得します。

Syntax

mKonashiManager.getBatteryLevel();

Parameters

なし

Returns

Promise<Integer, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。
callbackには結果として0 〜 100 までのパーセント単位の値が渡されます。

Example

konashi のバッテリ残量を取得し表示する

mKonashiManager.getBatteryLevel().done(new DoneCallback<Integer>() {
    @Override
    public void onDone(Integer result) {
        Log.d("Konashi", String.valueOf(result));
    }
});

getSignalStrength

Description

konashi の電波強度を取得します。

Syntax

mKonashiManager.getSignalStrength();

Parameters

なし

Returns

Promise<Integer, BletiaException, Object> Promiseオブジェクト。詳細はPromise をご覧ください。
callbackには結果としてdb単位の値が渡されます。

Example

konashi の電波強度を取得し表示する

mKonashiManager.getSignalStrength().done(new DoneCallback<Integer>() {
    @Override
    public void onDone(Integer result) {
        Log.d("Konashi", String.valueOf(result));
    }
});