日本語 / English
Fork me on GitHub

Hardware

API Reference

Extension Board

Hardware

Introduction

Concept

 既存のコンピュータの機能上の制約を超え、日常生活環境に沿った人(身体)とコンピュータとの新しいインタラクションを探る、そうすることで身の回りの世界に新しい広がりが生まれるのではないか。 フィジカル・コンピューティングはこのような考えのもと、ニューヨーク大学 Dan O'Sullivan 教授により提案(※1)されました。

 フィジカル・コンピューティングの思想に沿ったインタフェースの開発を行う場合、ソフトウェアのみならずハードウェア、意匠デザインなどの幅広い要素を含めて考える必要があります。 つまり、それぞれの分野で一定のスキルが必要となるため、人とコンピュータとのインタラクションについて深く議論することは容易ではありませんでした。

 このような背景から、これまでフィジカル・コンピューティングのツールキットとして「GAINER」「FUNNEL」「Arduino」などが開発、提供されました。 これらはコンピュータの入出力機能を外部に拡張する小規模なコンピュータであり、エンジニア以外にもわかりやすいように説明や開発環境が工夫されています。 モジュール化された入出力機能とその扱いやすさから、フィジカル・コンピューティングを考えるためのツールとして、現在、多くのアーティスト、デザイナ、エンジニアの間で広く普及し、その相互連携に貢献しています。

 しかし現在、我々の日常生活環境における “コンピュータ” という存在は、これまでの「デスクトップ型」や「ノートブック型」の端末ではなく「スマートフォン型」や「タブレット型」の端末へと移行しているのではないでしょうか。

 このような考えから、弊社ではスマートフォンやタブレットで利用可能かつ、これらの開発環境で扱うことが可能なツールキットとして “konashi” の開発をおこないました。

(※1) Tom I. and Dan O., Physical Computing: Sensing and Controlling the Physical World with Computers, Thomson, (May, 2004).

Architecture

 konashiはiPhoneアプリから簡単にコントロールできるようになっています。

 独自にkonashiと同じような、無線接続で簡単にコントロールできるものを実現するためには、

  • Bluetooh Low Energy(以下BLE) のしくみの理解
  • BLEモジュールを搭載したMPUの調達とBLEの通信を含めたプログラミング
  • 上記MPUとBLEで通信するiPhoneアプリの開発

を行う必要があります。また、iPhoneアプリでBLEを扱うためには、CoreBluetoothAPIのハンドリングやMPUとの複雑なデータのやり取りが必要となってきます。

そのため、konashiでは、

  • konashi独自のBLEのServiceやCharacteristicsの開発
  • BLEモジュール+MPUのプログラミング
  • iPhoneでのCoreBluetoothAPIのハンドリングを konashi-ios-sdk でラッピング

を行なっているので、konashiとiPhoneアプリの通信のハンドリングを意識することやMPUのプログラミングをせずに、iPhoneアプリからkonashiを簡単にコントロールすることができるようになっています。

また、konashiを操作するためのAPIもシンプルなものがほとんどです。たとえば、konashiのデジタルポートPIO0の出力をHIGHにするには以下のコードだけで完結します。

ObjectiveC
[Konashi digitalWrite:PIO0 value:HIGH];
JavaScript
k.digitalWrite(k.PIO0, k.HIGH);

このコードにより、iPhoneアプリからkonashiに対して「PIO0の出力をHIGHに」という命令が送られ、konashiに内蔵されているMPUがそれを解釈しPIO0の出力をHIGHにするようになっています。  

konashi.js

konashi-ios-sdk には、実機でのテストにiOSディベロッパー・ライセンスが必要であること、開発環境がMacに限定されること、そしてObjective-C言語そのものの習得が必要であること、以上の点で困難さが残っていました。

このような背景から konashi の制御の困難さを解消するため、Objective-Cではなく、webで一般的となったJavaSriptでの制御を可能にする konashi-js-sdk が開発されました。これにより、Webの技術からフィジカル・コンピューティングを始めることが可能となりました。

konashi.js は、konashi-js-sdk を用いてフィジカル・コンピューティングを行うiPhoneアプリです。 このアプリはAppStoreでいつでも無料でダウンロード可能です。

このアプリは、konashi用カスタムWebViewを内蔵しており、konashi-bridge.js を用いたHTML/JS/CSSのページを開けばすぐにkonashiを使用することができます。iPhoneアプリケーションの開発も必要ありません。

また、jsdoit株式会社のjsdo.it とも連動しており、jsdo.it 内のコード検索、コード実行、ユーザ検索が簡単に行えます。HTMLやJavaScript, CSSをどのサーバに置くかを考える必要もなく、ブラウザだけですべてを開発することができます。

konashi.jsでkonashiをコントロールするためには、konashi-bridge.jsをHTMLに組み込む必要があります。konashi-bridge.jsは HTML/JSからkonashi用カスタムWebViewを通してネイティブのkonashi関数にアクセスするためのブリッジ役を果たします。

<script src="http://konashi.ux-xu.com/kjs/konashi-bridge.min.js"></script>

konashi-bridge.js は

があるので、お好きなものをお使いください。

konashi-bridge.js は konashi-js-sdk で開発されています。

Versions

2013年1月の konashi の発売以降、konashi 同様にふるまう konashi 互換ハードウェアが複数登場しています。ここではそれらを紹介し、特徴を示します。

機能の差分の詳細については、各API仕様のドキュメント内で、このように背景色を変えて説明します。

商品名 販売時期 販売者 Revision 特徴、konashiに対する機能の差分
konashi 2013年1月31日〜 ユカイ工学株式会社 T1.0.0 最初の konashi
koshian 2014年9月〜 株式会社マクニカ 1.0.0 PIO,PWM,A/D,D/A未対応
I2Cの一度に送受信できるバイト数が、20から16に変更
BLEのService,CharacteristicのUUIDを変更
OTAファームウェアアップデートに対応
koshianについて詳しくはこちら [www.m-pression.com/]
konashi 2 2014年12月〜 ユカイ工学株式会社 2.0.0以降 PIOのピン数の変更(8->6)
DAC(アナログ出力)未対応
UARTの対応baudrateを追加
UARTで複数バイトを一度に送受信を可能に
I2Cで一度に送受信できるバイト数を、20から16に変更
BLEのService,CharacteristicのUUIDを変更
PWMを出せるピンがPIO0-2の3本のみに変更
PWM波形の仕様変更
OTAファームウェアアップデートに対応

表中の Revision は、konashi.js アプリを使用することで確認できるバージョン番号です。
konashi.js アプリは konashi.js - JavaScript/HTML/CSSとiPhoneでフィジカルコンピューティング [AppStore] からダウンロードしてください。

koshian、konashi 2 は konashi.js アプリのOTAファームウェアアップデート機能を利用することで、ファームウェアを更新することができます。例えば koshian はファームウェアアップデートを行うことで konashi 2 にアップグレードできます。

konashi.js アプリを使用した Revision 確認方法

  1. konashi.js の Setting タブを開き、 OTAアップデート を選択してください。

  2. konashi を iOSデバイスの近くにおき、 Connect を押すと、接続した konashi の Revision を表示します。
    以下は konashi の場合


    以下は koshian の場合


    以下は konashi 2 の場合

Specifications

Supported devices

シリーズ名 機種 使用OS
iPhone iPhone 4S, iPhone 5, iPhone 5S, iPhone 5C, iPhone 6, iPhone 6 Plus iOS7.1 〜
iPad iPad Air,
iPad mini,
iPad(第4世代 / 2012年11月モデル),
iPad(第3世代 / 2012年3月モデル)
iOS7.1 〜
iPod touch iPod touch(第5世代)
(注) iPod touch(第4世代)には
対応しておりません
2013/02/13修正
iOS7.1 〜

Appearance

    • Top view

      Bottom view

  • Layout

    Schematic

    Core functions

    Digital

    image

    konashiには、8つのデジタルI/Oピンが搭載されています。 デジタルI/Oピンでは、HighとLowの2つの状態を入力/出力することができます。

    konashiの場合、デジタルI/Oの基準電圧は3Vですので、3Vまたは0Vの電圧を入力/出力することができます。

    なお、初期状態ではすべてのデジタルI/Oは 入力 として設定されています。

    デジタルI/Oピンを入力に設定した場合、pinMode, pinModeAll 関数で内部プルアップを設定することも可能です。

    pinModeAll, digitalReadAll での戻り値や、pinPullupAll, digitalWriteAll での引数は、PIO0〜PIO7を8bit(1byte)として表現しています。どのビットがどのピン番号に対応しているかを以下に示します。

    image

    PIO0が0bit目(LSB)に、PIO7が7bit目(MSB)です。

    koshianはPIO未対応です。
    konashi 2 は PIO6, PIO7 はI2C専用になり、PIOとしては使えません。

    また、それぞれのビットの0/1がなにを表現するかはそれぞれの関数によって異なります。

    関数 bit: 0 bit: 1
    pinModeAll(入出力設定) 入力設定 出力設定
    pinPullupAll(プルアップ設定) プルアップ無効 プルアップ有効
    digitalWriteAll(出力の状態を設定) LOW(0V) HIGH(3V)
    digitalReadAll(入力の状態を設定) LOW(0V) HIGH(3V)

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

    ObjectiveC
    [Konashi pinModeAll:0b11111110]
    JavaScript
    k.pinModeAll(254);

    また、PIO0(S1)がHIGH、それ以外がLOWの状態だった時に digitalReadAll を実行すると、Objective-Cで1(00000001)は戻り値として返ってきます。また、JavaScriptでは、コールバック関数の第一引数dataにPIOの入力状態が格納されています。

    ObjectiveC
    int input = [Konashi digitalReadAll];
    NSLog(@"input = %d", input);   // input = 1(00000001)
    JavaScript
    k.digitalReadAll(function(data){
        console.log("input = " + data);    // input = 1
    });

    Analog

    image

    konashi には、3つのアナログI/Oピンが搭載されています。 アナログI/Oピンは、mV単位で入力されている電圧の値を取得したり(ADC)、指定の電圧を出力することができます(DAC)。

    konashiの場合、アナログI/Oの基準電圧は1.3Vですので、0Vから1.3Vまでの電圧をmV単位で入力/出力することができます。

    なお、初期上ではすべてのアナログI/Oは ADC(入力) として設定されています。

    注意点として、ADC と DAC を同時に使用することはできません。ADC として3ピンを使用するか、DAC を使用するかのどちらかとなります。

    また、DAC は同時に1ピンしか使用できません。他のピンをDACすると他のピンは出力がリセットされます(ADCになる)。

    koshianではADC, DAC機能は未対応です。
    konashi 2では、DAC機能は未対応です。

    PWM

    PWM(Pulse Width Modulation:パルス幅変調)は、ピンのON/OFFを繰り返すことでパスルを出力し、ONの時間(デューティ比)をコントロールする制御方式です。モータの回転速度やLEDの光の強さを制御するときによく使われる方式です。

    konashi には、デジタルI/O(PIO)のすべてのピンをPWMモードに設定することが可能です。

    konashi の PWM を使うににあたって、pwmMode, pwmPeriod, pwmDuty 関数でデューティ比や周期を決めるモード の他に、LEDの明るさを0〜100%で指定して簡単にドライブできるモード( pwmLedDrive 関数を使用)があります。どの PWM モードにするかは、 pwmMode 関数で指定できます。

    konashi の PWM はソフトウェアPWMで実装されているため、短い間隔でデューティ比を変更するなど、konashi側でBLE系の処理が連続して走る状態になると、一瞬だけ、指定したデューティー比を正確に出力できなくなる場合があります。つきましては、konashiに対するBLEのアクセスを連続して行わないようにするか、デューティ比がずれることがあっても影響を受けないものを制御の対象としてください。

    また、設定できる PWM の周期の最低値は 1000 [us] です。

    koshianではPWM機能は未対応です。
    konashiでは、任意のデジタルI/OピンからPWM出力を行うことができましたが、konashi 2 では、PIO0-PIO2の3本のみPWM出力として指定可能です。
    またkonashi 2では、PWM波形の仕様が以下のとおり変更になりました。

    • パルス幅は20usecの倍数(一般的なサーボモーターであれば約3.6度刻みで動かすことが出来る解像度です)
    • 周期は40usec~20,460usecが設定可能です。範囲外を指定した場合は設定可能範囲に制限されます

    Communication

    konashiには、他のデバイスとシリアル通信するための機能として、I2CとUARTの2種類に対応しています。

    I2C

    image

    I2Cで利用する信号線は、シリアルデータ(SDA)とシリアルクロック(SCL)の2本のみです。

    この通信規格は電子機器制御用のシンプルなバスシステムとして開発されたもので、規格の詳細はNXPセミコンダクター社のサイトから知ることができます。(詳細は以下の参考文献をご参照ください)

    参考文献: I2Cバス仕様書 バージョン2.1 (NXPセミコンダクター社) (PDFファイル / 780KB)

    konashi は、I2Cのマスタとして動作し、接続された周辺機器(スレーブ)と通信をおこないます。

    2つの信号線SDA,SCLは、konashi ではそれぞれ PIO6 (SDA)、PIO7 (SCL) が対応し ています。 上記の図のように接続し、デバイスの通信プロトコルに応じてプログラムを作成することで、I2C対応のLCDやセンサなどのデバイスと通信することができます。

    注意点として、SDA と SCL には必ずプルアップ抵抗を挿入してください。

    konashiライブラリ のI2C用関数 を利用することで、効率よくI2C 通信のプログラミングが可能です。

    konashi ではI2Cで一度に送受信できるバイト数が 18Byte ですが、koshian、konashi 2 では 16Byte に変更しました。

    UART

    image

    UARTは調歩同期方式によるシリアル通信を行う機能の総称であり、konashi ではこれをもちいて RS-232(ANSI/TIA/EIA-232-F-1997) に準拠したシリアル通信をおこなうことができます。

    konashi は、送信データ線(TX)と受信データ線(RX)の2本の信号線を利用して、UARTでのシリアル通信を行います。 上記の図のように接続し、プログラムを作成することでPCなどの周辺機器と簡単に通信することができます。

    信号の電圧は 3V です。

    設定できる通信速度は Constants / UART をご覧ください。

    バージョン毎に取り得るUARTの通信速度 [bps] は以下のとおりです。

    • konashi : 2400, 9600
    • koshian : 9600
    • konashi 2 : 9600, 19200, 38400, 57600, 76800, 115200
    また、konashi、koshianでは、一度に 1Byte ずつしか送受信できなかったところ、konashi 2では 18Byte まで一度に読み書きできるようになりました。

    データを送信する場合は uartWrite を実行してください。

    データを受信する場合は、KONASHI_EVENT_UART_RX_COMPLETE イベントを addObserver でキャッチしてください。

    JavaScript

    completeUartRxを使うことでより短くコードを記述することができます。
    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(recvUartRx) name:KONASHI_EVENT_UART_RX_COMPLETE];
    }
    
    - (void) recvUartRx
    {
        NSLog(@"UartRx %d", [Konashi uartRead]);
    }
    
    - (IBAction)find:(id)sender {
        [Konashi find];
    }
    JavaScript
    k.completeUartRx(function(data){
        console.log("UART recv: " + data);
    });
    
    k.find();

    Bluetooth Low Energy

    Bluetooth Low Energy(以下、BLE)はBluetooth SIG によって策定された低消費電力版Bluetoothであり、iPhone や iPad,最新のMacBookにも搭載されるようになりました。

    konashi は、このBLEを利用してiPhoneやiPadと接続されます。

    konashi は 初めてのユーザにも簡単に使用していただけるように設計しているため、CPUがスリープに入っている時間が少ないなど、省電力設計になっておりません。普通のBLEデバイスよりも消費電力が大きくなっておりますのでご注意ください。

    以下に、konashi のServiceやCharacteristicsのUUIDを示します。

    koshian, konashi 2 では ServiceやCharacteristicsのUUIDを変更しています。

    Services

    Name UUID (konashi) UUID (koshian, konashi 2)
    Konashi Service FF00 229BFF00-03FB-40DA-98A7-B0DEF65C2D4B

    Characteristics

    PIO
    Name UUID (konashi) UUID (koshian, konashi 2)
    PIO Setting 3000 229B3000-03FB-40DA-98A7-B0DEF65C2D4B
    PIO PullUp 3001 229B3001-03FB-40DA-98A7-B0DEF65C2D4B
    PIO Output 3002 229B3002-03FB-40DA-98A7-B0DEF65C2D4B
    PIO Input Notification 3003 229B3003-03FB-40DA-98A7-B0DEF65C2D4B
    PWM
    Name UUID (konashi) UUID (koshian, konashi 2)
    PWM Config 3004 229B3004-03FB-40DA-98A7-B0DEF65C2D4B
    PWM Parameter 3005 229B3005-03FB-40DA-98A7-B0DEF65C2D4B
    PWM Duty 3006 229B3006-03FB-40DA-98A7-B0DEF65C2D4B
    Analog
    Name UUID (konashi) UUID (koshian, konashi 2)
    Analog Drive 3007 229B3007-03FB-40DA-98A7-B0DEF65C2D4B
    Analog Read 0 3008 229B3008-03FB-40DA-98A7-B0DEF65C2D4B
    Analog Read 1 3009 229B3009-03FB-40DA-98A7-B0DEF65C2D4B
    Analog Read 2 300A 229B300A-03FB-40DA-98A7-B0DEF65C2D4B
    I2C
    Name UUID (konashi) UUID (koshian, konashi 2)
    I2C Config 300B 229B300B-03FB-40DA-98A7-B0DEF65C2D4B
    I2C Start Stop 300C 229B300C-03FB-40DA-98A7-B0DEF65C2D4B
    I2C Write 300D 229B300D-03FB-40DA-98A7-B0DEF65C2D4B
    I2C Read Parameter 300E 229B300E-03FB-40DA-98A7-B0DEF65C2D4B
    I2C Read 300F 229B300F-03FB-40DA-98A7-B0DEF65C2D4B
    UART
    Name UUID (konashi) UUID (koshian, konashi 2)
    UART Config 3010 229B3010-03FB-40DA-98A7-B0DEF65C2D4B
    UART Baud Rate 3011 229B3011-03FB-40DA-98A7-B0DEF65C2D4B
    UART TX 3012 229B3012-03FB-40DA-98A7-B0DEF65C2D4B
    UART RX Notification 3013 229B3013-03FB-40DA-98A7-B0DEF65C2D4B
    Hardware control
    Name UUID (konashi) UUID (koshian, konashi 2)
    Hardware Reset 3014 229B3014-03FB-40DA-98A7-B0DEF65C2D4B
    Low Battery Notification 3015 229B3015-03FB-40DA-98A7-B0DEF65C2D4B

    Event-driven

    konashiはiPhoneとは無線で接続されているため、konashiの状態を取得するにも数msほど通信時間を要します。取得できるまで待機する場合スレッドにロックが掛かってしまうため、基本的に非同期でデータを取得することになります。そのため、取得完了時にはイベントという形で、iPhoneアプリに対して通知されます。

    konashiを使うにあたっての、基本的なイベントサイクルは以下のようになります。灰色の部分がアプリを起動してから、konashiの接続を切断するまでに発行されるイベントです。

    また上記とは別に、Read系のAPI実行したあとに取得完了イベントも発行されます。これらのイベントを取得するためには、addObserver という関数を使用し、イベントがあったときに実行される関数(イベントオブザーバ)を登録します。イベントの種類は Constants - Events をご覧ください。

    API Reference

    iOS SDKに関するより詳しいドキュメントはこちらを参照ください。

    Constants

    Pin name

    ObjectiveC
    KonashiDigitalIO0 0 デジタルI/Oの0ピン目
    KonashiDigitalIO1 1 デジタルI/Oの1ピン目
    KonashiDigitalIO2 2 デジタルI/Oの2ピン目
    KonashiDigitalIO3 3 デジタルI/Oの3ピン目
    KonashiDigitalIO4 4 デジタルI/Oの4ピン目
    KonashiDigitalIO5 5 デジタルI/Oの5ピン目
    KonashiDigitalIO6 6 デジタルI/Oの6ピン目
    KonashiDigitalIO7 7 デジタルI/Oの7ピン目
    KonashiS1 0 タクトスイッチ(ジャンパ をショートすることで、 デジタルI/Oの0ピン目 に接続されます)
    KonashiLED2 1 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの1ピン目 に接続されます)
    KonashiLED3 2 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの2ピン目 に接続されます)
    KonashiLED4 3 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの3ピン目 に接続されます)
    KonashiLED5 4 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの4ピン目 に接続されます)
    KonashiAnalogIO0 0 アナログI/Oの0ピン目
    KonashiAnalogIO1 1 アナログI/Oの1ピン目
    KonashiAnalogIO2 2 アナログI/Oの2ピン目
    KonashiI2C_SDA 6 I2CのSDAのピン(デジタルI/Oの6ピン目)
    KonashiI2C_SCL 7 I2CのSCLのピン(デジタルI/Oの7ピン目)
    JavaScript
    PIO0 0 デジタルI/Oの0ピン目
    PIO1 1 デジタルI/Oの1ピン目
    PIO2 2 デジタルI/Oの2ピン目
    PIO3 3 デジタルI/Oの3ピン目
    PIO4 4 デジタルI/Oの4ピン目
    PIO5 5 デジタルI/Oの5ピン目
    PIO6 6 デジタルI/Oの6ピン目
    PIO7 7 デジタルI/Oの7ピン目
    S1 0 タクトスイッチ(ジャンパ をショートすることで、 デジタルI/Oの0ピン目 に接続されます)
    LED2 1 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの1ピン目 に接続されます)
    LED3 2 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの2ピン目 に接続されます)
    LED4 3 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの3ピン目 に接続されます)
    LED5 4 赤色LED(ジャンパ をショートすることで、 デジタルI/Oの4ピン目 に接続されます)
    AIO0 0 アナログI/Oの0ピン目
    AIO1 1 アナログI/Oの1ピン目
    AIO2 2 アナログI/Oの2ピン目
    I2C_SDA 6 I2CのSDAのピン(デジタルI/Oの6ピン目)
    I2C_SCL 7 I2CのSCLのピン(デジタルI/Oの7ピン目)

    PIO

    ObjectiveC
    KonashiLevelHigh 1 ピンの出力をHIGH(3V)にする
    KonashiLevelLow 0 ピンの出力をLOW(0V)にする
    KonashiPinModeOutput 1 ピンの入出力設定を出力に
    KonashiPinModeInput 0 ピンの入出力設定を入力に
    KonashiPinModePullup 1 ピンのプルアップ設定をON
    KonashiPinModeNoPulls 0 ピンのプルアップ設定をOFF
    JavaScript
    HIGH 1 ピンの出力をHIGH(3V)にする
    LOW 0 ピンの出力をLOW(0V)にする
    OUTPUT 1 ピンの入出力設定を出力に
    INPUT 0 ピンの入出力設定を入力に
    PULLUP 1 ピンのプルアップ設定をON
    NO_PULLS 0 ピンのプルアップ設定をOFF

    AIO

    ObjectiveC
    Konashi.analogReference 1300 アナログ入出力の基準電圧 1300mV
    JavaScript
    KONASHI_ANALOG_REFERENCE 1300 アナログ入出力の基準電圧 1300mV

    PWM

    ObjectiveC
    KonashiPWMModeDisable 0 指定したPIOをPWMとして使用しない(デジタルI/Oとして使用)
    KonashiPWMModeEnable 1 指定したPIOをPWMとして使用する
    KonashiPWMModeEnableLED 2 指定したPIOをLEDモードとしてPWMとして使用する
    KonashiLEDPeriod 10000 LEDモード時のPWMの周期は10ms
    JavaScript
    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

    ObjectiveC
    KonashiUartModeDisable 0 UART無効
    KonashiUartModeEnable 1 UART有効
    KonashiUartBaudrateRate2K4 0x000a 2400bps
    KonashiUartBaudrateRate9K6 0x0028 9600bps
    KonashiUartBaudrateRate19K2 0x0050 19200bps
    KonashiUartBaudrateRate38K4 0x00a0 38400pbs
    KonashiUartBaudrateRate57K6 0x00f0 57600pbs
    KonashiUartBaudrateRate76K8 0x0140 76800pbs
    KonashiUartBaudrateRate115K2 0x01e0 115200pbs
    JavaScript
    KONASHI_UART_DISABLE 0 UART無効
    KONASHI_UART_ENABLE 1 UART有効
    KONASHI_UART_RATE_2K4 0x000a 2400bps
    KONASHI_UART_RATE_9K6 0x0028 9600bps
    KONASHI_UART_RATE_19K2 0x0050 19200bps
    KONASHI_UART_RATE_38K4 0x00a0 38400pbs
    KONASHI_UART_RATE_57K6 0x00f0 57600pbs
    KONASHI_UART_RATE_76K8 0x0140 76800pbs
    KONASHI_UART_RATE_115K2 0x01e0 115200pbs

    I2C

    ObjectiveC
    KonashiI2CModeDisable 0 I2Cを無効にする
    KonashiI2CModeEnable 1 I2Cを有効にする(100kbpsモードがデフォルト)
    KonashiI2CModeEnable100K 1 100kbpsモードでI2Cを有効にする
    KonashiI2CModeEnable400K 2 400kbpsモードでI2Cを有効にする
    KonashiI2CConditionStop 0 ストップコンディション
    KonashiI2CConditionStart 1 スタートコンディション
    KonashiI2CConditionRestart 2 リスタートコンディション
    JavaScript
    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_STOP_CONDITION 0 ストップコンディション
    KONASHI_I2C_START_CONDITION 1 スタートコンディション
    KONASHI_I2C_RESTART_CONDITION 2 リスタートコンディション

    Function return

    ObjectiveC
    KonashiResultSuccess 0 成功時
    KonashiResultFailure 1 失敗時
    JavaScript
    KONASHI_SUCCESS 0 成功時
    KONASHI_FAILURE 1 失敗時

    Events

    ObjectiveC
    KonashiEventCentralManagerPowerOnNotification CoreBluetoothのセントラルマネージャが起動した時
    KonashiEventPeripheralNotFoundNotification findWithNameで指定した名前のkonashiが見つからなかった時
    KonashiEventPeripheralFoundNotification findWithNameで指定した名前のkonashiが見つかった時
    KonashiEventConnectedNotification konashiに接続した時(まだこの時はkonashiが使える状態ではありません)
    KonashiEventDisconnectedNotification konashiとの接続を切断した時
    KonashiEventReadyToUseNotification konashiに接続完了した時(この時からkonashiにアクセスできるようになります)
    KonashiEventDigitalIODidUpdateNotification PIOの入力の状態が変化した時
    KonashiEventAnalogIODidUpdateNotification AIOのどれかのピンの電圧が取得できた時
    KonashiEventAnalogIO0DidUpdateNotification AIO0の電圧が取得できた時
    KonashiEventAnalogIO1DidUpdateNotification AIO1の電圧が取得できた時
    KonashiEventAnalogIO2DidUpdateNotification AIO2の電圧が取得できた時
    KonashiEventI2CReadCompleteNotification I2Cからデータを受信した時
    KonashiEventUartRxCompleteNotification UARTのRxからデータを受信した時
    KonashiEventBatteryLevelDidUpdateNotification konashiのバッテリーのレベルを取得できた時
    KonashiEventSignalStrengthDidUpdateNotification konashiの電波強度を取得できた時
    JavaScript
    KONASHI_EVENT_CENTRAL_MANAGER_POWERED_ON CoreBluetoothのセントラルマネージャが起動した時
    KONASHI_EVENT_PERIPHERAL_NOT_FOUND findWithNameで指定した名前のkonashiが見つからなかった時
    KONASHI_EVENT_CONNECTED konashiに接続した時(まだこの時はkonashiが使える状態ではありません)
    KONASHI_EVENT_DISCONNECTED konashiとの接続を切断した時
    KONASHI_EVENT_READY konashiに接続完了した時(この時からkonashiにアクセスできるようになります)
    KONASHI_EVENT_UPDATE_PIO_INPUT PIOの入力の状態が変化した時
    KONASHI_EVENT_UPDATE_ANALOG_VALUE AIOのどれかのピンの電圧が取得できた時
    KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO0 AIO0の電圧が取得できた時
    KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO1 AIO1の電圧が取得できた時
    KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO2 AIO2の電圧が取得できた時
    KONASHI_EVENT_I2C_READ_COMPLETE I2Cからデータを受信した時
    KONASHI_EVENT_UART_RX_COMPLETE UARTのRxからデータを受信した時
    KONASHI_EVENT_UPDATE_BATTERY_LEVEL konashiのバッテリーのレベルを取得できた時
    KONASHI_EVENT_UPDATE_SIGNAL_STRENGTH konashiの電波強度を取得できた時

    Base

    initialize

    Description

    konashiの初期化を行います。

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

    JavaScript

    konashi-js-sdk内で自動的に initialize が行われているので、JavaScript でこの関数を実行する必要ありません。

    Syntax

    [Konashi initialize];
    

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess (0), 失敗時: KonashiResultFailure (-1)

    find

    Description

    iPhone周辺のkonashiを探します。

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

    本来、KonashiEventCentralManagerPowerOnNotification のイベント以前に find を実行しても無効ですが、この場合に限り、KonashiEventCentralManagerPowerOnNotification のイベント後に自動的に find が遅延実行されるように調整されています。

    Syntax

    ObjectiveC
    [Konashi find];
    JavaScript
    k.find();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess (0), 失敗時: KonashiResultFailure (-1)

    findWithName

    Description

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

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

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

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

    本来、KonashiEventCentralManagerPowerOnNotification のイベント以前に findWithName を実行しても無効ですが、この場合に限り、KonashiEventCentralManagerPowerOnNotification のイベント後に自動的に findWithName が遅延実行されるように調整されています。

    Syntax

    ObjectiveC
    [Konashi findWithName:(NSString *)name];
    JavaScript
    k.findWithName(name);

    Parameters

    name NSString* 接続したいkonashiの名前。例:"konashi#4-0452"

    Returns

    成功時: KonashiResultSuccess (0), 失敗時: KonashiResultFailure (-1)

    Example

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

    ObjectiveC
    [Konashi findWithName:@"konashi#4-0452"];
    JavaScript
    k.findWithName("konashi#4-0452");

    disconnect

    Description

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

    注意

    iOS6.1より古いiOSの場合、Core Bluetooth APIにバグがあり、この関数は正常に動作しません。iOS6.1以上では正しく動作します。

    Syntax

    ObjectiveC
    [Konashi disconnect];
    JavaScript
    k.disconnect();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess (0), 失敗時: KonashiResultFailure (-1)

    isConnected

    Description

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

    KonashiEventConnectedNotification のイベントが発火するタイミングでTRUEとなります。それ以前はFALSEです。

    Syntax

    ObjectiveC
    [Konashi isConnected];
    JavaScript
    k.isConnected(handler);

    Parameters

    ObjectiveC
    なし
    JavaScript
    handler 接続状態を取得完了したときに呼ばれる関数です。この関数の第一引数に接続状態が格納されています。

    Returns

    BOOL

    peripheralName

    Description

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

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

    Syntax

    ObjectiveC
    [Konashi peripheralName];
    JavaScript
    k.peripheralName(handler);

    Parameters

    ObjectiveC
    なし
    JavaScript
    handler konashiの名前が取得できたときに呼ばれる関数です。この関数の第一引数に接続されているkonashiの名前が格納されています。

    Returns

    NSString* (例: konashi#4-0452)

    Example

    ObjectiveC
    NSString* name = [Konashi peripheralName];
    NSLog(name);
    JavaScript
    k.peripheralName(function(name){
        console.log("Name: "+ name);
    });

    Events

    addObserver(on)

    Description

    konashiに関するイベントをキャッチすることができます。

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

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

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

    JavaScript

    JavaScriptでは on も同様の機能を有しています。

    Syntax

    ObjectiveC
    [Konashi addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString*)notificationName];
    JavaScript
    k.addObserver(name, handler);
    k.on(name, handler);

    Parameters

    ObjectiveC
    notificationObserver id オブザーバを指定します
    selector SEL イベント発火時に呼び出される関数を指定します
    name NSString* イベント名を指定します。詳細は Constants - Events を参照してください。
    JavaScript
    name イベント名を指定します。詳細は Constants - Events を参照してください。
    handler オブザーバを指定します。

    Returns

    成功時: KonashiResultSuccess (0), 失敗時: KonashiResultFailure (-1)

    Example

    konashiと接続したらCONNECTEDとコンソールに表示する

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        [Konashi addObserver:self selector:@selector(konashiConnected) name:KonashiEventConnectedNotification];
    }
    
    - (void) konashiConnected
    {
        NSLog(@"CONNECTED");
    }
    JavaScript
    k.on(k.KONASHI_EVENT_CONNECTED, function(){
        console.log("CONNECTED");
    });
    k.find();

    removeObserver

    Description

    addObserver で行ったkonashiイベントオブザーバを削除します。

    JavaScript

    JavaScriptでは off も同様の機能を有しています。

    Syntax

    ObjectiveC
    [Konashi removeObserver:(id)notificationObserver];
    JavaScript
    k.removeObserver(name, handler);
    k.off(name, handler);

    Parameters

    ObjectiveC
    notificationObserver id オブザーバを指定します
    JavaScript
    name イベント名を指定します。詳細は Constants - Events を参照してください。
    handler (Optional) 削除するハンドラを指定します。省略した場合、イベントに紐付いているイベントハンドラをすべて削除します。

    Returns

    成功時: KonashiResultSuccess (0), 失敗時: KonashiResultFailure (-1)

    Example

    konashiと接続したらCONNECTEDとコンソールに表示し、イベントハンドラを削除します。

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        [Konashi addObserver:self selector:@selector(konashiConnected) name:KonashiEventConnectedNotification];
    }
    
    - (void) konashiConnected
    {
        NSLog(@"CONNECTED");
       [Konashi removeObserver:self];
    }
    JavaScript
    k.on(k.KONASHI_EVENT_CONNECTED, function(){
        console.log("CONNECTED");
        k.off(k.KONASHI_EVENT_CONNECTED);
    });
    k.find();

    Digital I/O (PIO)

    pinMode

    Description

    PIOのピンを入力として使うか、出力として使うかの設定を行います。詳細は Core functions / Digital をご覧ください。

    Syntax

    ObjectiveC
    [Konashi pinMode:(int)pin mode:(int)mode];
    JavaScript
    k.pinMode(pin, mode);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    LED2をOUTPUTにする

    ObjectiveC
    [Konashi pinMode:LED2 mode:OUTPUT];
    JavaScript
    k.pinMode(k.LED2, k.OUTPUT);

    pinModeAll

    Description

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

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

    image

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

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

    ObjectiveC
    [Konashi pinModeAll:0b11111110];
    JavaScript
    k.pinModeAll(254);

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

    Syntax

    ObjectiveC
    [Konashi pinModeAll:(int)mode];
    JavaScript
    k.pinModeAll(mode);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi pinModeAll:0xFF];
    JavaScript
    k.pinModeAll(0xFF);

    pinPullup

    Description

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

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

    Syntax

    ObjectiveC
    [Konashi pinPullup:(int)pin mode:(int)mode];
    JavaScript
    k.pinPullup(pin, mode);

    Parameters

    ObjectiveC
    pin int 設定するPIOのピン名。設定可能なピン名は Constants / Pin name をご覧ください。
    mode int ピンをプルアップするかの設定。KonashiPinModePullupKonashiPinModeNoPulls が設定できます。詳細は Constants / PIO 定数をご覧ください。
    JavaScript
    pin int 設定するPIOのピン名。設定可能なピン名は Constants / Pin name をご覧ください。
    mode int ピンをプルアップするかの設定。PULLUPNO_PULLS が設定できます。詳細は Constants / PIO 定数をご覧ください。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    PIO7をプルアップする

    ObjectiveC
    [Konashi pinPullup:PIO7 mode:PULLUP];
    JavaScript
    k.pinPullup(k.PIO7, k.PULLUP);

    pinPullupAll

    Description

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

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

    image

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

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

    ObjectiveC
    [Konashi pinPullupAll:0b00000001];
    JavaScript
    k.pinPullupAll(1);

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

    Syntax

    ObjectiveC
    [Konashi pinPullupAll:(int)mode];
    JavaScript
    k.pinPullupAll(mode);

    Parameters

    pin int 設定するPIOのピン名。設定可能なピン名は Constants / Pin name をご覧ください。
    mode int PIO0 〜 PIO7 の計8ピンのプルアップの設定。0x00 〜 0xFF を指定してください。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi pinPullupAll:0xFF];  // 0b11111111, 255
    JavaScript
    k.pinPullupAll(0xFF);

    digitalRead

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi digitalRead:(int)pin];
    JavaScript
    k.digitalRead(pin, handler);

    Parameters

    ObjectiveC
    pin int PIOのピン名。指定可能なピン名は Constants / Pin name をご覧ください。
    JavaScript
    pin PIOのピン名。指定可能なピン名は Constants / Pin name をご覧ください。
    handler データ取得完了時に呼ばれる関数です。指定したピンのI/Oの入力状態は 第一引数に格納されています。

    Returns

    ObjectiveC
    KonashiLevelHigh もしくは KonashiLevelLow
    JavaScript
    HIGH もしくは LOW

    Example

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

    ObjectiveC
    [Konashi digitalRead:S1];
    JavaScript
    k.digitalRead(k.S1, function(data){
        console.log("S1 INPUT = " + data);
    });

    digitalReadAll

    Description

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

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

    image

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

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

    ObjectiveC
    int input = [Konashi digitalReadAll];
    NSLog(@"input = %d", input);   // input = 1
    JavaScript
    k.digitalReadAll(function(data){
        console.log("input = " + data);   // input = 1
    });

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

    Syntax

    ObjectiveC
    [Konashi digitalReadAll];
    JavaScript
    k.digitalReadAll(handler);

    Parameters

    ObjectiveC
    なし
    JavaScript
    handler 取得完了時に呼ばれる関数です。第一引数にPIOの入力状態が格納されています。

    Returns

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

    Example

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

    ObjectiveC
    [Konashi digitalReadAll];
    JavaScript
    k.digitalReadAll(function(data){
        console.log("PIO input = " + data.input);
    });

    digitalWrite

    Description

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

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

    Syntax

    ObjectiveC
    [Konashi digitalWrite:(int)pin value:(int)value];
    JavaScript
    k.digitalWrite(pin, value);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    LED2をHIGHにする

    ObjectiveC
    [Konashi digitalWrite:LED2 value:HIGH];
    JavaScript
    k.digitalWrite(k.LED2, k.HIGH);

    digitalWriteAll

    Description

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

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

    image

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

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

    ObjectiveC
    [Konashi digitalWriteAll:0b00001000];
    JavaScript
    k.digitalWriteAll(8);

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

    Syntax

    ObjectiveC
    [Konashi digitalWriteAll:(int)value];
    JavaScript
    k.digitalWriteAll(value);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi digitalWriteAll:0xFF];
    JavaScript
    k.digitalWriteAll(0xFF);

    Analog I/O (AIO)

    analogReference

    Description

    アナログ入出力の基準電圧を返します。

    Syntax

    ObjectiveC
    [Konashi analogReference];
    JavaScript
    k.analogReference();

    Parameters

    なし

    Returns

    1300 が返ります(mV)。

    analogReadRequest

    Description

    AIO の指定のピンの入力電圧を取得するリクエストを konashi に送ります。

    この関数は konashi にリクエストを送るものなので、実際に値を取得するには、KonashiEventAnalogIODidUpdateNotification もしくは Constants / Events に定義されている入力電圧取得完了イベントを addObserver でキャッチした後、analogRead で値を取得できます。

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

    JavaScript

    updateAnalogValue, updateAnalogValueAio0, updateAnalogValueAio1, updateAnalogValueAio2 を使うことで、よりシンプルにアナログ値取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi analogReadRequest:(int)pin];
    JavaScript
    k.analogReadRequest(pin);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    AIO0の入力電圧を取得する

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(konashiReady) name:KONASHI_EVENT_READY];
        [Konashi addObserver:self selector:@selector(readAio0) name:KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO0];
    }
    
    // konashiを探すボタンタップのアクション
    - (IBAction)findKonashi:(id)sender {
        [Konashi find];
    }
    
    // AIO0電圧取得ボタンタップのアクション
    - (IBAction)requestReadAio0:(id)sender {
        [Konashi analogReadRequest:AIO0];
    }
    
    - (void) readAio0
    {
        NSLog(@"READ_AIO0: %d", [Konashi analogRead:AIO0]);
    }
    JavaScript
    k.ready(function(){
        k.analogReadRequest(k.AIO0);
    });
    
    k.updateAnalogValueAio0(function(data){
        console.log("READ_AIO0: " + data.value);
    });
    
    k.find();

    analogRead

    Description

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

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

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

    JavaScript

    updateAnalogValue, updateAnalogValueAio0, updateAnalogValueAio1, updateAnalogValueAio2 を使うことで、よりシンプルにアナログ値取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi analogRead:(int)pin];
    JavaScript
    k.analogRead(pin, handler);

    Parameters

    ObjectiveC
    pin int AIOのピン名。指定可能なピン名は KonashiAnalogIO0, KonashiAnalogIO1, KonashiAnalogIO2 です。詳細は Constants / Pin name をご覧ください。
    JavaScript
    pin AIOのピン名。指定可能なピン名は AIO0, AIO1, AIO2 です。詳細は Constants / Pin name をご覧ください。
    handler アナログ値が取得できた時に実行される関数です。この関数の第一引数に指定したピンのアナログ値が格納されています。

    Returns

    0 〜 1300 までの、mV単位の値が返ります。

    Example

    AIO0の入力電圧を取得する

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(konashiReady) name:KONASHI_EVENT_READY];
        [Konashi addObserver:self selector:@selector(readAio0) name:KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO0];
    }
    
    // konashiを探すボタンタップのアクション
    - (IBAction)findKonashi:(id)sender {
        [Konashi find];
    }
    
    // AIO0電圧取得ボタンタップのアクション
    - (IBAction)requestReadAio0:(id)sender {
        [Konashi analogReadRequest:AIO0];
    }
    
    - (void) readAio0
    {
        NSLog(@"READ_AIO0: %d", [Konashi analogRead:AIO0]);
    }
    JavaScript
    k.ready(function(){
        k.analogReadRequest(k.AIO0);
    });
    
    k.updateAnalogValueAio0(function(data){
        k.analogRead(k.AIO0, function(data){
            console.log("READ_AIO0: " + data));
        });
        
        // k.updateAnalogValueAio0 のコールバックの第一引数dataにもAIO0のアナログ値が入っています
        //console.log("READ_AIO0: " + data);
    });
    
    k.find();

    analogWrite

    Description

    AIO の指定のピンに任意の電圧を出力します。

    指定できる最大の電圧は 1300 [mV] です。

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

    Syntax

    ObjectiveC
    [Konashi analogWrite:(int)pin milliVolt:(int)milliVolt];
    JavaScript
    k.analogWrite(pin, milliVolt);

    Parameters

    ObjectiveC
    pin int AIOのピン名。指定可能なピン名は KonashiAnalogIO0, KonashiAnalogIO1, KonashiAnalogIO2 です。詳細は Constants / Pin name をご覧ください。
    milliVolt int 設定する電圧をmVで指定します。0 〜 1300 まで設定可能です。
    JavaScript
    pin int AIOのピン名。指定可能なピン名は AIO0, AIO1, AIO2 です。詳細は Constants / Pin name をご覧ください。
    milliVolt int 設定する電圧をmVで指定します。0 〜 1300 まで設定可能です。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    AIO0に1.0Vを出力させる

    ObjectiveC
    [Konashi analogWrite:AIO0 milliVolt:1000];
    JavaScript
    k.analogWrite(k.AIO0, 1000);

    PWM

    pwmMode

    Description

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

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

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

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

    Syntax

    ObjectiveC
    [Konashi pwmMode:(int)pin mode:(int)mode];
    JavaScript
    k.pwmMode(pin, mode);

    Parameters

    ObjectiveC
    pin int PWMモードの設定をするPIOのピン名。KonashiDigitalIO0KonashiDigitalIO7 が設定可能です。
    mode int 設定するPWMのモード。KonashiPWMModeDisable , KonashiPWMModeEnable, KonashiPWMModeEnableLED が設定できます。詳細は Constants / PWM をご覧ください。
    JavaScript
    pin int PWMモードの設定をするPIOのピン名。PIO0PIO7 が設定可能です。
    mode int 設定するPWMのモード。KONASHI_PWM_DISABLE , KONASHI_PWM_ENABLE, KONASHI_PWM_ENABLE_LED_MODE が設定できます。詳細は Constants / PWM をご覧ください。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi pwmMode:LED2 mode:KONASHI_PWM_ENABLE];
    [Konashi pwmPeriod:LED2 period:10000];
    [Konashi pwmDuty:LED2 duty:5000];
    JavaScript
    k.pwmMode(k.LED2, k.KONASHI_PWM_ENABLE);
    k.pwmPeriod(k.LED2, 10000);
    k.pwmDuty(k.LED2, 5000);

    pwmPeriod

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi pwmPeriod:(int)pin period:(unsigned int)period];
    JavaScript
    k.pwmPeriod(pin, period);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi pwmPeriod:LED2 period:10000];
    JavaScript
    k.pwmPeriod(k.LED2, 10000);

    pwmDuty

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi pwmDuty:(int)pin duty:(unsigned int)duty];
    JavaScript
    k.pwmDuty(pin, duty);

    Parameters

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

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi pwmDuty:LED2 duty:5000];
    JavaScript
    k.pwmDuty(k.LED2, 5000);

    pwmLedDrive

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi pwmLedDrive:(int)pin dutyRatio:(int)ratio];
    JavaScript
    k.pwmLedDrive(pin, ratio);

    Parameters

    ObjectiveC
    pin int PIOのピン名。KonashiDigitalIO0KonashiDigitalIO7 が設定可能です。
    ratio int LEDの明るさ。0〜100 をしてしてください。
    JavaScript
    pin int PIOのピン名。PIO0PIO7 が設定可能です。
    ratio int LEDの明るさ。0〜100 をしてしてください。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    LED2の明るさを30%にする

    ObjectiveC
    [Konashi pwmMode:LED2 mode:KONASHI_PWM_ENABLE_LED_MODE];
    [Konashi pwmLedDrive:LED2 dutyRatio:30];
    JavaScript
    k.pwmMode(k.LED2, k.KONASHI_PWM_ENABLE_LED_MODE);
    k.pwmLedDrive(k.LED2, 30);

    UART

    uartMode

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi uartMode:(int)mode];
    JavaScript
    k.uartMode(mode);

    Parameters

    ObjectiveC
    mode int 設定するUARTのモード。KonashiUartModeDisable , KonashiUartModeEnable が設定できます。
    JavaScript
    mode int 設定するUARTのモード。KONASHI_UART_DISABLE , KONASHI_UART_ENABLE が設定できます。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    UARTを有効にする

    ObjectiveC
    [Konashi uartMode:KONASHI_UART_ENABLE];
    JavaScript
    k.uartMode(k.KONASHI_UART_ENABLE);

    uartBaudrate

    Description

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

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

    Syntax

    ObjectiveC
    [Konashi uartBaudrate:(int)baudrate];
    JavaScript
    k.uartBaudrate(baudrate);

    Parameters

    baudrate int UARTの通信速度。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi uartBaudrate:KONASHI_UART_RATE_9K6];
    JavaScript
    k.uartBaudrate(k.KONASHI_UART_RATE_9K6);

    uartWrite

    Description

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

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

    Syntax

    ObjectiveC
    [Konashi uartWrite:(unsigned char)data];
    JavaScript
    k.uartWrite(data);

    Parameters

    data unsigned char 送信するデータ。1byteです。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi uartWrite:'A'];
    JavaScript
    k.uartWrite('A');

    I2C

    i2cMode

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi i2cMode:(int)mode];
    JavaScript
    k.i2cMode(mode);

    Parameters

    ObjectiveC
    mode int 設定するI2Cのモード。KonashiI2CModeDisable , KonashiI2CModeEnable, KonashiI2CModeEnable100K, KonashiI2CModeEnable400K が設定できます。KonashiI2CModeEnableKonashiI2CModeEnable100K は等価です。
    JavaScript
    mode int 設定するI2Cのモード。KONASHI_I2C_DISABLE , KONASHI_I2C_ENABLE, KONASHI_I2C_ENABLE_100K, KONASHI_I2C_ENABLE_400K が設定できます。KONASHI_I2C_ENABLEKONASHI_I2C_ENABLE_100K は等価です。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    [Konashi i2cMode:KONASHI_I2C_ENABLE];
    JavaScript
    k.i2cMode(k.KONASHI_I2C_ENABLE);

    i2cStartCondition

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi i2cStartCondition];
    JavaScript
    k.i2cStartCondition();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    i2cRestartCondition

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi i2cRestartCondition];
    JavaScript
    k.i2cRestartCondition();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    i2cStopCondition

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi i2cStopCondition];
    JavaScript
    k.i2cStopCondition();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    i2cWrite

    Description

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

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

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

    Syntax

    ObjectiveC
    [Konashi i2cWrite:(int)length data:(unsigned char*)data address:(unsigned char)address];
    JavaScript
    k.i2cWrite(length, data, address);

    Parameters

    length int 書き込むデータ(byte)の長さ
    data unsigned char* 書き込むデータ
    address unsigned char 書き込み先アドレス

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    unsigned char data[] = {'A'};
    [Konashi i2cWrite:1 data:data address:0x45];
    JavaScript
    k.i2cWrite(1, 'A', 0x45);

    i2cReadRequest

    Description

    I2C で指定したアドレスからデータを読み込むリクエストを行います。

    この関数はリクエストを行うだけでデータは取得できません。実際に値を取得するには、KonashiEventI2CReadCompleteNotificationaddObserver でキャッチした後、i2cRead で値を取得できます。

    JavaScript

    completeReadI2c を使うことで、よりシンプルにアナログ値取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi i2cReadRequest:(int)length address:(unsigned char)address];
    JavaScript
    k.i2cReadRequest(length, address);

    Parameters

    length int 読み込むデータの長さ
    address unsigned char 読み込み先のアドレス

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    i2cRead

    Description

    konashi が I2C から読み込んだデータを取得します。この関数で取得できる値は前回の i2cReadRequest 時に取得したデータです。

    JavaScript

    completeReadI2c を使うことで、よりシンプルにアナログ値取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi i2cRead:(int)length data:(unsigned char*)data];
    JavaScript
    k.i2cRead(length, handler);

    Parameters

    ObjectiveC
    length int 読み込むデータの長さ
    data unsigned char* 読み込んだデータを格納するポインタ
    JavaScript
    length 読み込むデータの長さ
    handler I2Cで読み込んデータを取得できた時に呼ばれる関数です。この関数の第一引数に読み込んだデータが格納されています。

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Hardware Control

    reset

    Description

    konashi を再起動します。

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

    Syntax

    ObjectiveC
    [Konashi reset];
    JavaScript
    k.reset();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    konashi を再起動する

    ObjectiveC
    [Konashi reset];
    JavaScript
    k.reset();

    batteryLevelReadRequest

    Description

    konashi のバッテリ残量を取得するリクエストを konashi に送ります。

    この関数は konashi にリクエストを送るものなので、実際に値を取得するには、KonashiEventBatteryLevelDidUpdateNotification (バッテリ残量取得完了イベント)を addObserver でキャッチした後、batteryLevelRead で値を取得できます。

    JavaScript

    updateBatteryLevel を使うことで、よりシンプルにバッテリ残量取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi batteryLevelReadRequest];
    JavaScript
    k.batteryLevelReadRequest();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

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

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(konashiReady) name:KONASHI_EVENT_READY];
        [Konashi addObserver:self selector:@selector(battery) KONASHI_EVENT_UPDATE_BATTERY_LEVEL];
    }
    
    // konashiを探すボタンタップのアクション
    - (IBAction)findKonashi:(id)sender {
        [Konashi find];
    }
    
    // バッテリ残量取得ボタンタップのアクション
    - (IBAction)batteryLevelReadRequest:(id)sender {
        [Konashi batteryLevelReadRequest];
    }
    
    - (void) battery
    {
        NSLog(@"READ_BATTERY: %d", [Konashi batteryLevelRead]);
    }
    JavaScript
    k.ready(function(){
        // konashiと接続したら電池の残量を取得する
        k.batteryLevelReadRequest();
    });
          
    k.updateBatteryLevel(function(data){
        // 電池残量読み込み完了したら実行される
        console.log("#Battery Level: " + data);
    });
    
    k.find();

    batteryLevelRead

    Description

    konashi のバッテリ残量を取得します。この関数で取得できる値は前回の batteryLevelReadRequest 時に取得した残量です。

    konashiの現在のバッテリ残量を取得したい場合は、まず batteryLevelReadRequest で konashi に取得リクエストを送り、 KonashiEventBatteryLevelDidUpdateNotificationaddObserver でキャッチした後、 この関数で値を取得できます。

    JavaScript

    updateBatteryLevel を使うことで、よりシンプルにバッテリ残量取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi batteryLevelRead];
    JavaScript
    k.batteryLevelRead(handler);

    Parameters

    ObjectiveC
    なし
    JavaScript
    handler 電池残量が取得完了時に呼ばれる関数を指定します。この関数の第一引数に電池残量が格納されます。

    Returns

    0 〜 100 のパーセント単位でバッテリ残量が返ります。

    Example

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

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(konashiReady) name:KONASHI_EVENT_READY];
        [Konashi addObserver:self selector:@selector(battery) KONASHI_EVENT_UPDATE_BATTERY_LEVEL];
    }
    
    // konashiを探すボタンタップのアクション
    - (IBAction)findKonashi:(id)sender {
        [Konashi find];
    }
    
    // バッテリ残量取得ボタンタップのアクション
    - (IBAction)batteryLevelReadRequest:(id)sender {
        [Konashi batteryLevelReadRequest];
    }
    
    - (void) battery
    {
        NSLog(@"READ_BATTERY: %d", [Konashi batteryLevelRead]);
    }
    JavaScript
    k.ready(function(){
        // konashiと接続したら電池の残量を取得する
        k.batteryLevelReadRequest();
    });
          
    k.updateBatteryLevel(function(data){
        // 電池残量読み込み完了したら実行される
        k.batteryLevelRead(function(data){
            console.log("#Battery Level: " + data);
        });
        
        // k.updateBatteryLevel のコールバックの第一引数dataに電池残量が格納されています
        // console.log("#Battery Level: " + data);
    });
    
    k.find();

    signalStrengthReadRequest

    Description

    konashi の電波強度を取得するリクエストを行います。

    この関数はリクエストを行うだけでデータは取得できません。実際に値を取得するには、KonashiEventSignalStrengthDidUpdateNotification (電波強度取得完了イベント)を addObserver でキャッチした後、signalStrengthRead で値を取得できます。

    JavaScript

    updateSignalStrength を使うことで、よりシンプルに電波強度取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi signalStrengthReadRequest];
    JavaScript
    k.signalStrengthReadRequest();

    Parameters

    なし

    Returns

    成功時: KonashiResultSuccess, 失敗時: KonashiResultFailure

    Example

    konashi の電波強度を取得する

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(konashiReady) name:KONASHI_EVENT_READY];
        [Konashi addObserver:self selector:@selector(strength) KONASHI_EVENT_UPDATE_SIGNAL_STRENGTH];
    }
    
    // konashiを探すボタンタップのアクション
    - (IBAction)findKonashi:(id)sender {
        [Konashi find];
    }
    
    // 電波強度取得ボタンタップのアクション
    - (IBAction)signalStrengthReadRequest:(id)sender {
        [Konashi signalStrengthReadRequest];
    }
    
    - (void) strength
    {
        NSLog(@"READ_STRENGTH: %d", [Konashi signalStrengthRead]);
    }
    JavaScript
    k.ready(function(){
        // konashiと接続したら電波強度を取得する
        k.batteryLevelReadRequest();
    });
    
    k.updateSignalStrength(function(data){
        // 電波強度取得完了したら実行される
        console.log("#Signal Strength: " + data);
    });
    
    k.find();

    signalStrengthRead

    Description

    konashi の電波強度を取得します。この関数で取得できる値は前回の signalStrengthReadRequest 時に取得した強度(db)です。距離が近いと-40db, 距離が遠いと-90db程度になります。

    konashiの現在の電波強度を取得したい場合は、まず signalStrengthReadRequest で konashi に取得リクエストを送り、 KonashiEventSignalStrengthDidUpdateNotificationaddObserver でキャッチした後、 この関数で値を取得できます。

    JavaScript

    updateSignalStrength を使うことで、よりシンプルに電波強度取得イベントをキャッチできます。

    Syntax

    ObjectiveC
    [Konashi signalStrengthRead];
    JavaScript
    k.signalStrengthRead(handler);

    Parameters

    ObjectiveC
    なし
    JavaScript
    handler 電波強度が取得完了時に呼ばれる関数を指定します。この関数の第一引数に電波強度が格納されます。

    Returns

    電波強度がdbで返ります。

    Example

    konashi の電波強度を取得する

    ObjectiveC
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [Konashi initialize];
        
        [Konashi addObserver:self selector:@selector(konashiReady) name:KONASHI_EVENT_READY];
        [Konashi addObserver:self selector:@selector(strength) KONASHI_EVENT_UPDATE_SIGNAL_STRENGTH];
    }
    
    // konashiを探すボタンタップのアクション
    - (IBAction)findKonashi:(id)sender {
        [Konashi find];
    }
    
    // 電波強度取得ボタンタップのアクション
    - (IBAction)signalStrengthReadRequest:(id)sender {
        [Konashi signalStrengthReadRequest];
    }
    
    - (void) strength
    {
        NSLog(@"READ_STRENGTH: %d", [Konashi signalStrengthRead]);
    }
    JavaScript
    k.ready(function(){
        // konashiと接続したら電波強度を取得する
        k.batteryLevelReadRequest();
    });
    
    k.updateSignalStrength(function(data){
        // 電波強度取得完了したら実行される
        k.signalStrengthRead(function(data){
            console.log("#Signal Strength: " + data);
        });
        
        // k.updateSignalStrength のコールバックの第一引数に電波強度が格納されています
        // console.log("#Signal Strength: " + data);
    });
    
    k.find();

    JavaScript Event API

    JavaScript Event API について

    Events で挙げられているイベントをキャッチするためには、addObserver(on)でイベントハンドラを登録する必要があります。

    k.on(k.KONASHI_EVENT_READY, function(){
        console.log("#konashiの準備が整ったようです!さあ使っていこう");
    });
    
    k.find();
    

    これをよりシンプルに記述できるのが JavaScript Event API です。

    k.ready(function(){
        console.log("#konashiの準備が整ったようです!さあ使っていこう");
    });
    
    k.find();
    

    jQueryでいうところの、$("#hoge").on("click", function(e){})$("#hoge").click(function(e){}) と記述できるのと同じ要領です。

    centralManagerPoweredOn

    Description

    KONASHI_EVENT_CENTRAL_MANAGER_POWERED_ON イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.centralManagerPoweredOn(handler);
    

    Parameters

    handler イベントハンドラ

    Returns

    なし

    peripheralNotFound

    Description

    KONASHI_EVENT_PERIPHERAL_NOT_FOUND イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.peripheralNotFound(handler);
    

    Parameters

    handler イベントハンドラ

    Returns

    なし

    connected

    Description

    KONASHI_EVENT_CONNECTED イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.connected(handler);
    

    Parameters

    handler イベントハンドラ

    Returns

    なし

    disconnected

    Description

    KONASHI_EVENT_DISCONNECTED イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.disconnected(handler);
    

    Parameters

    handler イベントハンドラ

    Returns

    なし

    ready

    Description

    KONASHI_EVENT_READY イベント(Events参照)のイベントハンドラを登録します。

    k.find()を実行したあと、k.readyKONASHI_EVENT_READY イベントを受け取った後から、koanshiと通信ができるようになります。jQueryでいうところの$(function(){})$.ready(function(){}) と同じ要領です。

    Syntax

    k.ready(handler);
    

    Parameters

    handler イベントハンドラ

    Returns

    なし

    Example

    k.ready(function(){
       k.pinMode(k.LED2, k.OUTOUT);
       k.digitalWrite(k.LED2, k.HIGH);  // LED2 on
    });
    
    // konashiを探す
    k.find();
    

    updatePioInput

    Description

    KONASHI_EVENT_UPDATE_PIO_INPUT イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.updatePioInput(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数にPIOの入力状態が格納されています。

    Returns

    なし

    Example

    k.updatePioInput(function(data){
       // PIOの入力の状態が変化したら実行されます
       console.log("#PIO Input: " + data);
    });
    
    // konashiを探す
    k.find();
    

    updateAnalogValue

    Description

    KONASHI_EVENT_UPDATE_ANALOG_VALUE イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.updateAnalogValue(handler);
    

    Parameters

    handler イベントハンドラ。

    Returns

    なし

    updateAnalogValueAio0

    Description

    KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO0 イベント(Events参照)のイベントハンドラを登録します。

    analogReadRequest でAIO0のアナログ値を読むリクエストを送った後、konashiがアナログ値を取得しJavaScript側にデータを送ってきた時に KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO0 インベントが発行されます。analogReadRequest を実行する前に、 updateAnalogValueAio0 でイベントハンドラを設定してください。

    Syntax

    k.updateAnalogValueAio0(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数にAIO0のアナログ値が格納されています。

    Returns

    なし

    Example

    k.updateAnalogValueAio0(function(data){
        // AIO0のアナログ値が取得できたら実行されます
        console.log("#AIO0 Value: " + data);
    });
    
    k.ready(function(){
        // konashiとの接続し使用する準備が整った時に実行されます
        k.analogReadRequest(k.AIO0);  // AIO0のアナログ値をReadするリクエストを送る
    });
    
    // konashiを探す
    k.find();
    

    updateAnalogValueAio1

    Description

    KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO1 イベント(Events参照)のイベントハンドラを登録します。

    analogReadRequest でAIO1のアナログ値を読むリクエストを送った後、konashiがアナログ値を取得しJavaScript側にデータを送ってきた時に KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO1 インベントが発行されます。analogReadRequest を実行する前に、 updateAnalogValueAio1 でイベントハンドラを設定してください。

    Syntax

    k.updateAnalogValueAio1(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数にAIO1のアナログ値が格納されています。

    Returns

    なし

    Example

    k.updateAnalogValueAio1(function(data){
        // AIO1のアナログ値が取得できたら実行されます
        console.log("#AIO Value: " + data);
    });
    
    k.ready(function(){
        // konashiとの接続し使用する準備が整った時に実行されます
        k.analogReadRequest(k.AIO1);  // AIO1のアナログ値をReadするリクエストを送る
    });
    
    // konashiを探す
    k.find();
    

    updateAnalogValueAio2

    Description

    KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO2 イベント(Events参照)のイベントハンドラを登録します。

    analogReadRequest でAIO2のアナログ値を読むリクエストを送った後、konashiがアナログ値を取得しJavaScript側にデータを送ってきた時に KONASHI_EVENT_UPDATE_ANALOG_VALUE_AIO2 インベントが発行されます。analogReadRequest を実行する前に、 updateAnalogValueAio2 でイベントハンドラを設定してください。

    Syntax

    k.updateAnalogValueAio2(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数にAIO2のアナログ値が格納されています。

    Returns

    なし

    Example

    k.updateAnalogValueAio2(function(data){
        // AIO0のアナログ値が取得できたら実行されます
        console.log("#AIO2 Value: " + data);
    });
    
    k.ready(function(){
        // konashiとの接続し使用する準備が整った時に実行されます
        k.analogReadRequest(k.AIO2);  // AIO2のアナログ値をReadするリクエストを送る
    });
    
    // konashiを探す
    k.find();
    

    completeReadI2c

    Description

    KONASHI_EVENT_I2C_READ_COMPLETE イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.completeReadI2c(handler);
    

    Parameters

    handler イベントハンドラ。

    Returns

    なし

    completeUartRx

    Description

    KONASHI_EVENT_UART_RX_COMPLETE イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.completeUartRx(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数にUARTで受信したデータ(1Byte)が格納されています。

    Returns

    なし

    Example

    k.completeUartRx(function(data){
       // UARTでデータを受信した時に実行されます
       console.log("#UART Recv: " + data);
    });
    
    k.ready(function(){
        // konashiとの接続が確立し、konashi側の準備が整った時に実行されます
        k.uartMode(k.KONASHI_UART_ENABLE); // UARTを有効に
        k.uartBaudrate(k.KONASHI_UART_RATE_9K6);  // 9600bpsに
    });
    
    // konashiを探す
    k.find();
    

    updateBatteryLevel

    Description

    KONASHI_EVENT_UPDATE_BATTERY_LEVEL イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.updateBatteryLevel(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数に電池残量が格納されています。電池残量は 0 〜 100 のパーセント単位です。

    Returns

    なし

    Example

    k.updateBatteryLevel(function(data){
       // 電池残量が取得できたら実行されます
       console.log("#Battery: " + data + "%");
    });
    
    k.ready(function(){
        k.batteryLevelRead();   // 電池残量取得リクエスト
    });
    
    // konashiを探す
    k.find();
    

    updateSignalStrength

    Description

    KONASHI_EVENT_UPDATE_BATTERY_LEVEL イベント(Events参照)のイベントハンドラを登録します。

    Syntax

    k.updateSignalStrength(handler);
    

    Parameters

    handler イベントハンドラ。このハンドラの第一引数に電波強度が格納されています。電波強度は 0 〜 100 のパーセント単位です。

    Returns

    なし

    Example

    k.updateSignalStrength(function(data){
       // 電波強度が取得できたら実行されます
       console.log("#Battery: " + data + "%");
    });
    
    k.ready(function(){
        k.signalStrengthReadRequest();   // 電波強度取得リクエスト
    });
    
    // konashiを探す
    k.find();
    

    Extension Boards

    AD変換拡張ボード

    ObjectiveC
    KONASHI_ADC_CH0 0 AD変換ボードのチャンネル0
    KONASHI_ADC_CH1 1 AD変換ボードのチャンネル1
    KONASHI_ADC_CH2 2 AD変換ボードのチャンネル2
    KONASHI_ADC_CH3 3 AD変換ボードのチャンネル3
    KONASHI_ADC_CH4 4 AD変換ボードのチャンネル4
    KONASHI_ADC_CH5 5 AD変換ボードのチャンネル5
    KONASHI_ADC_CH6 6 AD変換ボードのチャンネル6
    KONASHI_ADC_CH7 7 AD変換ボードのチャンネル7
    KONASHI_ADC_CH0_CH1 0 チャンネル0とチャンネル1の差動入力
    KONASHI_ADC_CH2_CH3 1 チャンネル2とチャンネル3の差動入力
    KONASHI_ADC_CH4_CH5 2 チャンネル4とチャンネル5の差動入力
    KONASHI_ADC_CH6_CH7 3 チャンネル6とチャンネル7の差動入力
    KONASHI_ADC_CH1_CH0 4 チャンネル1とチャンネル0の差動入力
    KONASHI_ADC_CH3_CH2 5 チャンネル3とチャンネル2の差動入力
    KONASHI_ADC_CH5_CH4 6 チャンネル5とチャンネル4の差動入力
    KONASHI_ADC_CH7_CH6 7 チャンネル7とチャンネル6の差動入力
    KONASHI_ADC_ADDR_00 0x48 スイッチを00に設定した際のI2Cアドレス
    KONASHI_ADC_ADDR_01 0x49 スイッチを01に設定した際のI2Cアドレス
    KONASHI_ADC_ADDR_10 0x4a スイッチを10に設定した際のI2Cアドレス
    KONASHI_ADC_ADDR_11 0x4b スイッチを11に設定した際のI2Cアドレス
    KONASHI_ADC_REFOFF_ADCOFF 0 参照電圧とAD変換器のパワーをオフ
    KONASHI_ADC_REFOFF_ADCON 1 参照電圧のパワーをオフ、AD変換器のパワーをオン
    KONASHI_ADC_REFON_ADCOFF 2 参照電圧のパワーをオン、AD変換器のパワーをオフ
    KONASHI_ADC_REFON_ADCON 3 参照電圧とAD変換器のパワーをオン
    JavaScript
    adc.CH0 0 AD変換ボードのチャンネル0
    adc.CH1 1 AD変換ボードのチャンネル1
    adc.CH2 2 AD変換ボードのチャンネル2
    adc.CH3 3 AD変換ボードのチャンネル3
    adc.CH4 4 AD変換ボードのチャンネル4
    adc.CH5 5 AD変換ボードのチャンネル5
    adc.CH6 6 AD変換ボードのチャンネル6
    adc.CH7 7 AD変換ボードのチャンネル7
    adc.CH0_CH1 0 チャンネル0とチャンネル1の差動入力
    adc.CH2_CH3 1 チャンネル2とチャンネル3の差動入力
    adc.CH4_CH5 2 チャンネル4とチャンネル5の差動入力
    adc.CH6_CH7 3 チャンネル6とチャンネル7の差動入力
    adc.CH1_CH0 4 チャンネル1とチャンネル0の差動入力
    adc.CH3_CH2 5 チャンネル3とチャンネル2の差動入力
    adc.CH5_CH4 6 チャンネル5とチャンネル4の差動入力
    adc.CH7_CH6 7 チャンネル7とチャンネル6の差動入力
    adc.ADDR_00 0x48 スイッチを00に設定した際のI2Cアドレス
    adc.ADDR_01 0x49 スイッチを01に設定した際のI2Cアドレス
    adc.ADDR_10 0x4a スイッチを10に設定した際のI2Cアドレス
    adc.ADDR_11 0x4b スイッチを11に設定した際のI2Cアドレス
    adc.REFOFF_ADCOFF 0 参照電圧とAD変換器のパワーをオフ
    adc.REFOFF_ADCON 1 参照電圧のパワーをオフ、AD変換器のパワーをオン
    adc.REFON_ADCOFF 2 参照電圧のパワーをオン、AD変換器のパワーをオフ
    adc.REFON_ADCON 3 参照電圧とAD変換器のパワーをオン

    AC調光拡張ボード

    ObjectiveC
    KONASHI_AC_MODE_ONOFF 0 ON/OFFモード
    KONASHI_AC_MODE_PWM 1 PWMモード
    KONASHI_PWM_AC_PERIOD 10000 PWMモードの周期
    KONASHI_AC_FREQ_50HZ 50 コンセントの周波数50Hz(東日本)
    KONASHI_AC_FREQ_60HZ 60 コンセントの周波数60Hz(西日本)
    JavaScript
    acdrive.MODE_ONOFF 0 ON/OFFモード
    acdrive.MODE_PWM 1 PWMモード
    acdrive.PWM_PERIOD 10000 PWMモードの周期
    acdrive.FREQ_50HZ 50 コンセントの周波数50Hz(東日本)
    acdrive.FREQ_60HZ 60 コンセントの周波数60Hz(西日本)

    Grove拡張ボード

    ObjectiveC
    KonashiDigitalIO0 0 デジタルI/Oの0ピン目
    KonashiDigitalIO1 1 デジタルI/Oの1ピン目
    KonashiDigitalIO2 2 デジタルI/Oの2ピン目
    KonashiDigitalIO3 3 デジタルI/Oの3ピン目
    KonashiDigitalIO4 4 デジタルI/Oの4ピン目
    KonashiDigitalIO5 5 デジタルI/Oの5ピン目
    KonashiDigitalIO6 6 デジタルI/Oの6ピン目
    KonashiDigitalIO7 7 デジタルI/Oの7ピン目
    KonashiAnalogIO0 0 アナログI/Oの0ピン目
    KonashiAnalogIO1 1 アナログI/Oの1ピン目
    KonashiAnalogIO2 2 アナログI/Oの2ピン目
    JavaScript
    grove.D0 PIO0 ディジタルポート0
    grove.D1 PIO1 ディジタルポート1
    grove.D2 PIO2 ディジタルポート2
    grove.D3 PIO3 ディジタルポート3
    grove.D4 PIO4 ディジタルポート4
    grove.D5 PIO5 ディジタルポート5
    grove.D6 PIO6 ディジタルポート6
    grove.D7 PIO7 ディジタルポート7
    grove.A0 AIO0 アナログポート0
    grove.A1 AIO1 アナログポート1
    grove.A2 AIO2 アナログポート2

    konashi AD変換拡張ボード(YE-EX001)

    image

    konashi AD変換拡張ボードは、フィジカル・コンピューティング・ツールキットkonashiのアナログ入力を、I2Cを用いて拡張するためのインタフェース基板です。 Groveセンサモジュールをそのまま接続して使用することができます。

    initADC / init

    Description

    AD変換基板の初期化を行います。AD変換基板のアドレスを指定し、アナログの電圧値をI2C経由で読み取ることができるように設定を行います。

    JavaScript

    第2引数にコールバック関数を渡すことができます。コールバック関数には、ポートの 0〜3V の電圧に対して 0〜4096 までの値が渡されます。
    k.adc.init(k.adc.ADDR_00, function(value){
        alert(value);
    });

    Syntax

    ObjectiveC
    [Konashi initADC:address];
    JavaScript
    k.adc.init(address,handler);

    Parameters

    ObjectiveC
    address AD変換拡張ボードのアドレスを指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。
    JavaScript
    address AD変換拡張ボードのアドレスを指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。
    handler (オプション) AD変換拡張ボードからの値の取得完了時に呼ばれる関数を指定します。この関数の第一引数に、電圧に対応した値が格納されます。

    Returns

    なし

    Example

    スイッチS1がそれぞれOFF,OFF(アドレス 0x48)のときの初期化

    ObjectiveC
    [Konashi initADC:ADDR_00];
    JavaScript
    k.adc.init(k.adc.ADDR_00, function(value){
        alert(value);
    });

    readADCWithChannel / read

    Description

    チャンネル番号を指定して、AD変換基板からデータを受け取ります。

    JavaScript

    Extension Board/ADC/init で指定したコールバック関数に、取得した値が渡されます。 コールバック関数には、ポートの 0〜3V の電圧に対して 0〜4096 までの値が渡されます。

    Syntax

    ObjectiveC
    [Konashi readADCWithChannel:channel];
    JavaScript
    k.adc.read(channel);

    Parameters

    ObjectiveC
    channel AD変換拡張ボードのチャンネルを指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。
    JavaScript
    channel AD変換拡張ボードのチャンネルを指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。

    Returns

    なし

    Example

    チャンネル0から読み取り

    ObjectiveC
    [Konashi readADCWithChannel:KONASHI_ADC_CH0];
    JavaScript
    k.adc.read(k.adc.CH0);

    readDiffADCWithChannels / readDiff

    Description

    チャンネル番号を指定して、AD変換基板から差動をとったデータを受け取ります。 この機能を使うと、チャンネル間の電圧の差を取得することができます。

    JavaScript

    Extension Board/ADC/init で指定したコールバック関数に、取得した値が渡されます。 コールバック関数には、ポートの 0〜3V の電圧に対して 0〜4096 までの値が渡されます。

    Syntax

    ObjectiveC
    [Konashi readDiffADCWithChannels:channels];
    JavaScript
    k.adc.readDiff(channels);

    Parameters

    ObjectiveC
    channel AD変換拡張ボードのチャンネルのペアにあたる値を指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。
    JavaScript
    channel AD変換拡張ボードのチャンネルのペアにあたる値を指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。

    Returns

    なし

    Example

    チャンネル1を基準電圧(0V)としたときのチャンネル0の値を取得

    ObjectiveC
    [Konashi readDiffADCWithChannels:KONASHI_ADC_CH0_CH1];
    JavaScript
    k.adc.readDiff(k.adc.CH0_CH1);

    selectADCPowerMode / selectPowerMode

    Description

    AD変換拡張ボードに搭載されているICのモードを切り替えます。 IC内部の各機能への電源の供給をON/OFFすることができます。

    Syntax

    ObjectiveC
    [Konashi selectADCPowerMode:mode];
    JavaScript
    k.adc.selectPowerMode(mode);

    Parameters

    ObjectiveC
    mode AD変換拡張ボードの電源モードを指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。
    JavaScript
    mode AD変換拡張ボードの電源モードを指定します。指定できる値はExtensionBoard/Constants/ADCをご覧ください。

    Returns

    なし

    Example

    AD変換機能と参照電圧機能をONにする

    ObjectiveC
    [Konashi selectADCPowerMode:KONASHI_ADC_REFON_ADCON];
    JavaScript
    k.adc.selectPowerMode(k.adc.REFON_ADCON);

    konashi AC調光拡張ボード(YE-EX003)

    image

    konashi AC調光拡張ボード(YE-EX003)は、フィジカル・コンピューティング・ツールキットkonashi(YE-WPC001)のディジタル出力とPWMを使用して、コンセントからの電源を使用するライトやヒータなどの出力を制御する拡張ボードです。

    initACDrive / init

    Description

    AC調光拡張ボードで使用するピンの初期化を行います。

    Syntax

    ObjectiveC
    [Konashi initACDrive:mode freq:freq];
    JavaScript
    k.acdrive.init(mode,freq);

    Parameters

    ObjectiveC
    mode AC調光拡張ボードの動作モードを指定します。指定できる値はExtensionBoard/Constants/ACDriveをご覧ください。
    freq 使用するコンセントの周波数を指定します。西日本では60Hz、東日本では50Hzです。
    JavaScript
    mode AC調光拡張ボードの動作モードを指定します。指定できる値はExtensionBoard/Constants/ACDriveをご覧ください。
    freq 使用するコンセントの周波数を指定します。西日本では60Hz、東日本では50Hzです。

    Returns

    なし

    Example

    PWMモードを東日本で使用するために初期化する

    ObjectiveC
    [Konashi initACDrive:KONASHI_AC_MODE_PWM freq:KONASHI_AC_FREQ_50HZ];
    JavaScript
    k.acdrive.init(k.acdrive.AC_MODE_PWM, k.acdrive.AC_FREQ_50HZ);

    onACDrive / on

    Description

    ON/OFFモードのとき、出力をONにします。

    Syntax

    ObjectiveC
    [Konashi onACDrive];
    JavaScript
    k.acdrive.on();

    Parameters

    なし

    Returns

    なし

    offACDrive / off

    Description

    ON/OFFモードのとき、出力をOFFにします。

    Syntax

    ObjectiveC
    [Konashi offACDrive];
    JavaScript
    k.acdrive.off();

    Parameters

    なし

    Returns

    なし

    updateACDriveDuty / updateDuty

    Description

    AC調光拡張ボードのDuty比を設定します。 この関数を使用するには,PWMモードに設定している必要があります.

    Syntax

    ObjectiveC
    [Konashi updateACDriveDuty:ratio];
    JavaScript
    k.acdrive.updateDuty(ratio);

    Parameters

    ObjectiveC
    ratio Duty比を1から100で指定します。
    JavaScript
    ratio Duty比を1から100で指定します。

    Returns

    なし

    Example

    Duty比を50%に設定する

    ObjectiveC
    [Konashi updateACDriveDuty:50];
    JavaScript
    k.acdrive.updateDuty(50);

    selectACDriveFreq / selectFreq

    Description

    AC調光拡張ボードで使用するコンセントの周波数を設定します。

    Syntax

    ObjectiveC
    [Konashi selectACDriveFreq:freq];
    JavaScript
    k.acdrive.selectFreq(freq);

    Parameters

    ObjectiveC
    freq 使用するコンセントの周波数を指定します。指定できる値はExtensionBoard/Constants/ACDriveをご覧ください。
    JavaScript
    freq 使用するコンセントの周波数を指定します。指定できる値はExtensionBoard/Constants/ACDriveをご覧ください。

    Returns

    なし

    Example

    PWMモードを東日本で使用するために周波数を設定する

    ObjectiveC
    [Konashi selectACDriveFreq:KONASHI_AC_FREQ_50HZ];
    JavaScript
    k.acdrive.selectFreq(k.acdrive.AC_FREQ_50HZ);

    konashi Grove拡張ボード(YE-EX004)

    image

    konashi Grove拡張ボード(YE-EX004)は、フィジカル・コンピューティング・ツールキットkonashi(YE-WPC001)の入出力ピンで、Groveモジュールを使用できるようにする拡張ボードです。

    konashi 2 では、PIOのピン数が変更(8->6)になっているため、該当するポートが使えません。

    writeGroveDigitalPort / digitalWrite

    Description

    Grove拡張ボードのディジタルポートの出力状態を設定します。

    この関数はGrove拡張ボード向けに digitalWrite 関数のニックネームとして定義されています。 プログラムの動作は digitalWrite 関数と同じです。

    Syntax

    ObjectiveC
    [Konashi writeGroveDigitalPort:(int)port];
    JavaScript
    k.grove.digitalWrite(port);

    readGroveDigitalPort / digitalRead

    Description

    Grove拡張ボードのディジタルポートの値を取得します。

    この関数はGrove拡張ボード向けに digitalRead 関数のニックネームとして定義されています。 プログラムの動作は digitalRead 関数と同じです。

    Syntax

    ObjectiveC
    [Konashi readGroveDigitalPort:(int)port];
    JavaScript
    k.grove.digitalRead(port);

    readGroveAnalogPort / analogReadRequest

    Description

    Grove拡張ボードのアナログポートの値を取得するリクエストを konashi に送ります。

    この関数はGrove拡張ボード向けに analogReadRequest 関数のニックネームとして定義されています。 プログラムの動作は analogReadRequest 関数と同じです。

    Syntax

    ObjectiveC
    [Konashi readGroveAnalogPort:(int)port];
    JavaScript
    k.grove.analogReadRequest(port);