4: 2016-12-13 (火) 15:03:21 takaboo[6] [7] | 5: 2016-12-13 (火) 15:33:25 takaboo[6] [8] | ||
---|---|---|---|
Line 239: | Line 239: | ||
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 | ||
Line 250: | Line 250: | ||
} | } | ||
-&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 | ||
Line 257: | Line 257: | ||
} | } | ||
-&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をインスタンス化 | ||
// ソフトウェアシリアルモードで使用 | // ソフトウェアシリアルモードで使用 | ||
Line 274: | Line 275: | ||
// 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のエラーが返ります。 |
(This host) = https://www.besttechnology.co.jp