4: 2016-12-13 (火) 15:03:21 takaboo |
5: 2016-12-13 (火) 15:33:25 takaboo |
| | | |
| DXLIBのインストールは、ArduinoのIDEの「スケッチ→ライブラリのインクルード→.ZIP形式のライブラリをインストール...」メニューを使用してダウンロードしたZIPファイルを選択するだけです。~ | | DXLIBのインストールは、ArduinoのIDEの「スケッチ→ライブラリのインクルード→.ZIP形式のライブラリをインストール...」メニューを使用してダウンロードしたZIPファイルを選択するだけです。~ |
- | インストールが完了すると、ユーザーフォルダ配下に「Arduino/libraries/dxlib」が作られ、ライブラリのソースといくつかのサンプルプログラムがその中に展開されます。~ | + | インストールが完了すると、ユーザーフォルダ配下に「Arduino/libraries/dxlib」が作られ、ライブラリのソースといくつかのサンプルプログラムがその中に展開されます。詳しくはサンプルプログラムとライブラリのソースを参照して下さい。~ |
| | | |
| DXLIB v1.1で使用できるヘッダファイルとAPIは以下の通りです。 | | DXLIB v1.1で使用できるヘッダファイルとAPIは以下の通りです。 |
| -&color(#0099ff){''dxlib.h''};~ | | -&color(#0099ff){''dxlib.h''};~ |
- | Dynamixel Protocol V.1のデバイスを対象とする場合に本ヘッダファイルをインクルードします。V.2のヘッダファイルとAPIは共存できませんが、いずれもAPIの定義は互換性があります。 | + | Dynamixel Protocol V.1のデバイスを対象とする場合、'''dxlib.h'''をスケッチにインクルードする事で'''DXLIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、V.2との共存はできません。 |
| #include <dxlib.h> | | #include <dxlib.h> |
| DXLIB dxif (true); // select software serial | | DXLIB dxif (true); // select software serial |
| } | | } |
| -&color(#0099ff){''dx2lib.h''};~ | | -&color(#0099ff){''dx2lib.h''};~ |
- | Dynamixel Protocol V.2のデバイスを対象とする場合に本ヘッダファイルをインクルードします。V.1のヘッダファイルとAPIは共存できませが、いずれもAPIの定義は互換性があります。 | + | Dynamixel Protocol V.2のデバイスを対象とする場合、'''dx2lib.h'''をスケッチにインクルードする事で'''DX2LIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、V.1との共存はできません。 |
| #include <dx2lib.h> | | #include <dx2lib.h> |
| DX2LIB dxif (true); // select software serial | | DX2LIB dxif (true); // select software serial |
| } | | } |
| -&color(#0099ff){''DXLIB/DX2LIB'' (bool ss, uint8_t txpin, uint8_t rxpin)};~ | | -&color(#0099ff){''DXLIB/DX2LIB'' (bool ss, uint8_t txpin, uint8_t rxpin)};~ |
- | ソフトウェアシリアルの使用('''ss''')・送信端子('''txpin''')・受信端子('''rxpin''')を指定した上でオブジェクトを生成します。~ | + | ヘッダファイルに応じて'''DXLIB'''ないし'''DX2LIB'''いずれかのクラスが使用できます。同時にソフトウェアシリアルの使用('''ss''')・送信端子('''txpin''')・受信端子('''rxpin''')を指定した上でオブジェクトを生成できます。~ |
- | '''ss'''にtrueを指定したら[[ソフトウェアシリアルモード>#ee08b548]]、falseを指定したら[[ハードウェアシリアルモード>#ce79cebb]]にDXSHIELDを設定しなくてはなりません。~ | + | なお、'''ss'''にtrueを指定したら[[ソフトウェアシリアルモード>#ee08b548]]、falseを指定したら[[ハードウェアシリアルモード>#ce79cebb]]にDXSHIELDを設定しなくてはなりません。~ |
- | '''txpin'''と'''rxpin'''はDXSHIELDを使用する限り指定は省略します。 | + | また、'''txpin'''と'''rxpin'''はDXSHIELDを使用する限り指定してはなりません。 |
| + | #include <dx2lib.h> |
| // dxifの名前でDynamixel Protocol V.2 Libraryをインスタンス化 | | // dxifの名前でDynamixel Protocol V.2 Libraryをインスタンス化 |
| // ソフトウェアシリアルモードで使用 | | // ソフトウェアシリアルモードで使用 |
| // ID=1へPingインストラクションパケットを送信 | | // ID=1へPingインストラクションパケットを送信 |
| dxif.TxPacket (1, 0x01, NULL, 0); | | dxif.TxPacket (1, 0x01, NULL, 0); |
- | -&color(#0099ff){bool DXLIB/DX2LIB::''RxPacket'' (uint8_t *rdata, uint16_t rdatasize, uint16_t *rlen, uint8_t *err)};~ | + | -&color(#0099ff){bool DXLIB/DX2LIB::''RxPacket'' (uint8_t *rdata, uint16_t rdatasize, uint8_t *rid, uint16_t *rlen, uint8_t *err)};~ |
- | ステータスパケットを受信します。成功するとパケット内のパラメータが'''rdata'''へコピーされ、そのパラメータのサイズが'''rlen'''に返されます。なお、ステータスパケットを受信するのに十分なサイズを確保し、そのポインタを'''rdata'''へ、サイズを'''rdatasize'''に指定します。'''err'''にはDynamixelのエラーが返ります。 | + | ステータスパケットを受信します。成功するとパケット内のパラメータが'''rdata'''へコピーされ、そのパラメータのサイズが'''rlen'''に返されます。なお、ステータスパケットを受信するのに十分なサイズを確保し、そのポインタを'''rdata'''へ、サイズを'''rdatasize'''に指定します。'''rid'''にはID、'''err'''にはDynamixelのエラーが返ります。 |
- | uint8_t buf[10], err; | + | uint8_t buf[10], id, err; |
| uint16_t len; | | uint16_t len; |
| // ID=1へPingインストラクションパケットを送信 | | // ID=1へPingインストラクションパケットを送信 |
| dxif.TxPacket (1, 0x01, NULL, 0); | | dxif.TxPacket (1, 0x01, NULL, 0); |
| // ステータスパケットを受信 | | // ステータスパケットを受信 |
- | dxif.RxPacket (buf, sizeof (buf), &len, &err) | + | dxif.RxPacket (buf, sizeof (buf), &id, &len, &err) |
| -&color(#0099ff){bool DXLIB/DX2LIB::''ReadByteData'' (uint8_t id, uint16_t addr, uint8_t *data, uint8_t *err)};~ | | -&color(#0099ff){bool DXLIB/DX2LIB::''ReadByteData'' (uint8_t id, uint16_t addr, uint8_t *data, uint8_t *err)};~ |
| 指定されたID('''id''')・アドレス('''addr''')から8ビットのデータを'''data'''へ読み出します。'''err'''にはDynamixelのエラーが返ります。 | | 指定されたID('''id''')・アドレス('''addr''')から8ビットのデータを'''data'''へ読み出します。'''err'''にはDynamixelのエラーが返ります。 |