|
一覧
検索
最新
ページへ戻る
履歴
DXLIB_Arduino
のバックアップソース(No.1)
knowledge
:
DXLIB_Arduino
のバックアップソース(No.1)
差分
を表示
現在との差分
を表示
DXLIB_Arduino
へ行く。
Next »
DXSHIELDを[[ソフトウェアシリアル>#ee08b548]]もしくは[[ハードウェアシリアル>#ce79cebb]]モードに設定した場合、ArduinoのスケッチでDynamixelを制御するためのライブラリが利用できます。~ PC版DYNAMIXEL Protocol [[1.0>Dynamixel Library]]/[[2.0>Dynamixel Protocol 2 Library]] Library同様プロトコルやにシリアル通信を意識すること無くコントロールテーブルへの読み書きが行えますが、Arduino版は機能を限定したサブセット版となります。 -ライブラリのダウンロード(Arduino UNO/MEGAを想定)~ -- #ref(dxlib1.3_for_arduino.zip) dxlib.cppのハードウェアシリアルポートの初期化不足修正 -- #ref(dxlib1.2_for_arduino.zip) 任意のハードウェアシリアルポートへの割り当て対応 -- #ref(dxlib1.1_for_arduino.zip) Dynamixel Protocol V.2に対応~ 低位の送受信関数追加~ 32bitデータの送受信関数追加~ アドレスとサイズに関する引数は全て16bitに統一 -- #ref(dxlib1.0_for_arduino.zip) 初期リリース DXLIBのインストールは、ArduinoのIDEの「スケッチ→ライブラリのインクルード→.ZIP形式のライブラリをインストール...」メニューを使用してダウンロードしたZIPファイルを選択するだけです。~ インストールが完了すると、ユーザーフォルダ配下に「Arduino/libraries/dxlib」が作られ、ライブラリのソースといくつかのサンプルプログラムがその中に展開されます。詳しくはサンプルプログラムとライブラリのソースを参照して下さい。~ DXLIB v1.2以降で使用できるヘッダファイルとAPIは以下の通りです。 -&color(#0099ff){''dxlib.h''};~ [[DYNAMIXEL Communiation Protocol 1.0]]対応デバイスを対象とする場合、'''dxlib.h'''をスケッチにインクルードする事で'''DXLIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、'''dx2lib.h'''との共存はできません。 #include <dxlib.h> DXLIB dxif (true); // select software serial void setup() { dxif.begin (57600); } -&color(#0099ff){''dx2lib.h''};~ [[DYNAMIXEL Communiation Protocol 2.0]]対応デバイスを対象とする場合、'''dx2lib.h'''をスケッチにインクルードする事で'''DX2LIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、'''dxlib.h'''との共存はできません。 #include <dx2lib.h> DX2LIB dxif (true); // select software serial void setup() { dxif.begin (57600); } -&color(#0099ff){''DXLIB/DX2LIB'' (bool ss, HardwareSerial *hws, uint8_t rxpin, uint8_t txpin)};~ ヘッダファイルに応じて'''DXLIB'''ないし'''DX2LIB'''いずれかのクラスが使用できます。同時にソフトウェアシリアルの使用('''ss''')・ハードウェアシリアルオブジェクト('''hws''')・受信端子('''rxpin''')・送信端子('''txpin''')を指定した上でオブジェクトを生成できます。~ なお、'''ss'''にtrueを指定したら[[ソフトウェアシリアルモード>#ee08b548]]、falseを指定したら[[ハードウェアシリアルモード>#ce79cebb]]にDXSHIELDを設定しなくてはなりません。~ また、'''hws'''や'''rxpin'''、'''txpin'''は通常指定する必要はありませんが、他のSHIELDやArduinoの機能の都合で使用できない場合に限り指定します。 #include <dx2lib.h> // dxifの名前でDynamixel Protocol V.2 Libraryをインスタンス化 // ソフトウェアシリアルモードで使用 DX2LIB dxif(true); -&color(#0099ff){void DXLIB/DX2LIB::''begin'' (long baud)};~ ライブラリを使用可能にします。引数('''baud''')にはDynamixelに設定されたボーレートを指定します。~ なお、選択したモードにより使用できるボーレートに制限があります。 // 生成されたdxifを57143bpsで初期化 void setup() { dxif.begin (57143); } -&color(#0099ff){bool DXLIB/DX2LIB::''TxPacket'' (uint8_t id, uint8_t inst, uint8_t *param, uint16_t len)};~ 指定されたID('''id''')・インストラクション('''inst''')・パラメータ('''param''')・パラメータ長('''len''')のインストラクションパケットを送信します。 // ID=1へPingインストラクションパケットを送信 dxif.TxPacket (1, 0x01, NULL, 0); -&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'''に指定します。'''rid'''にはID、'''err'''にはDynamixelのエラーが返ります。 uint8_t buf[10], id, err; uint16_t len; // ID=1へPingインストラクションパケットを送信 dxif.TxPacket (1, 0x01, NULL, 0); // ステータスパケットを受信 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)};~ 指定されたID('''id''')・アドレス('''addr''')から8ビットのデータを'''data'''へ読み出します。'''err'''にはDynamixelのエラーが返ります。 // ID=1のAX-12のLEDを取得 uint8_t led; dxif.ReadByteData (1, 25, &led, NULL); -&color(#0099ff){bool DXLIB/DX2LIB::''ReadWordData'' (uint8_t id, uint16_t addr, uint16_t *data, uint8_t *err)};~ 指定されたID('''id''')・アドレス('''addr''')から16ビットのデータを'''data'''へ読み出します。'''err'''にはDynamixelのエラーが返ります。 // ID=1のAX-12からPresentPositionを取得 uint16_t ppos; dxif.ReadWordData (id, 36, &ppos, NULL); -&color(#0099ff){bool DXLIB/DX2LIB::''ReadLongData'' (uint8_t id, uint16_t addr, uint32_t *data, uint8_t *err)};~ 指定されたID('''id''')・アドレス('''addr''')から32ビットのデータを'''data'''へ読み出します。'''err'''にはDynamixelのエラーが返ります。 -&color(#0099ff){bool DXLIB/DX2LIB::''WriteByteData'' (uint8_t id, uint16_t addr, uint8_t data, uint8_t *err)};~ 指定されたID('''id''')・アドレス('''addr''')・8ビットのデータ('''data''')をDynamixelに書き込みます。'''err'''にはDynamixelのエラーが返ります。 // ID=1のAX-12のLEDを点灯 uint8_t err; dxif.WriteByteData (id, 25, 1, &err); -&color(#0099ff){bool DXLIB/DX2LIB::''WriteWordData'' (uint8_t id, uint16_t addr, uint16_t data, uint8_t *err)};~ 指定されたID('''id''')・アドレス('''addr''')・16ビットのデータ('''data''')をDynamixelに書き込みます。'''err'''にはDynamixelのエラーが返ります。 // ID=1のAX-12のGoalPositionを511に変更 dxif.WriteWordData (id, 30, 511, NULL); -&color(#0099ff){bool DXLIB/DX2LIB::''WriteLongData'' (uint8_t id, uint16_t addr, uint32_t data, uint8_t *err)};~ 指定されたID('''id''')・アドレス('''addr''')・32ビットのデータ('''data''')をDynamixelに書き込みます。'''err'''にはDynamixelのエラーが返ります。 -&color(#0099ff){bool DXLIB/DX2LIB::''WriteSyncByteData'' (const uint8_t *pid, uint16_t addr, const uint8_t *pdata, int num)};~ 指定されたid数('''num''')分のIDの配列('''pid''')・アドレス('''addr''')・8ビットのデータ配列('''pdata''')をDynamixelに書き込みます。 // ID=1~5の5個のAX-12のLEDへ点滅を指令 uint8_t ids={1,2,3,4,5}; uint16_t leds={1,1,1,1,1}; dxif.WriteSyncByteData (ids, 30, leds, 5); -&color(#0099ff){bool DXLIB/DX2LIB::''WriteSyncWordData'' (const uint8_t *pid, uint16_t addr, const uint16_t *pdata, int num)};~ 指定されたid数('''num''')分のIDの配列('''pid''')・アドレス('''addr''')・16ビットのデータ配列('''pdata''')をDynamixelに書き込みます。 // ID=1~5の5個のAX-12に個別のGoalPositionを指令 uint8_t ids={1,2,3,4,5}; uint16_t poss={100,200,300,400,500}; dxif.WriteSyncWordData (ids, 30, ppos, 5); -&color(#0099ff){bool DXLIB/DX2LIB::''WriteSyncLongData'' (const uint8_t *pid, uint16_t addr, const uint32_t *pdata, int num)};~ 指定されたid数('''num''')分のIDの配列('''pid''')・アドレス('''addr''')・32ビットのデータ配列('''pdata''')をDynamixelに書き込みます。 -&color(#0099ff){bool DXLIB/DX2LIB::''Ping'' (uint8_t id, uint16_t *err)};~ 指定されたID('''id''')のDynamixelを検索します。'''err'''にはDynamixelのエラーが返ります。 -&color(#0099ff){bool DXLIB/DX2LIB::''Reset'' (uint8_t id, uint16_t *err)};~ 指定されたID('''id''')のDynamixelを出荷時状態に戻します。'''err'''にはDynamixelのエラーが返ります。 また、Arduino IDEのバージョンによっては「SoftwareSerial.h: No such file or directory」のコンパイルエラーが発生しますので、その場合は自信のスケッチの先頭に以下の1行を挿入してコンパイルします。 #include <SoftwareSerial.h>
Next »
DXLIB_Arduino のバックアップ一覧
DXLIB_Arduino のバックアップソース(No. All)
1: 2018-12-02 (日) 21:05:16
takaboo
2: 2018-12-02 (日) 21:05:16
takaboo
3: 2021-09-09 (木) 17:49:32
takaboo
4: 2021-09-09 (木) 17:49:32
takaboo
5: 2022-06-04 (土) 22:09:03
takaboo
6: 2022-06-08 (水) 09:09:54
takaboo
7: 2022-06-08 (水) 09:10:10
takaboo
8: 2023-03-15 (水) 07:20:45
takaboo
9: 2023-03-15 (水) 07:21:59
takaboo
10: 2023-03-21 (火) 18:09:00
takaboo
現: 2023-03-21 (火) 18:09:15
takaboo
Copyright© 1989,2024 BestTechnology Co.,Ltd.
メニュー
トップ
ニュース
お知らせ
新商品情報
更新情報
マニュアル類
技術情報
チュートリアル
FAQ
お問合せ
技術的なお問合せ
その他お問合せ
お見積り
ブログ
会社案内
ショッピング
ご利用案内
検索
カテゴリ 一覧
ロボットキット
Dynamixelシリーズ
マイコンボード
相撲ロボット
センサ
通信機器
お客様ページ