#include <fd.h>もうちょっとで公開です。
void main (void) {
int16_t now = -1500, p;
// ポートオープン
RS_ChangeBaudrate (230400);
// モータON
fd_RSEnableControl (1, true);
while (!fd_GetPB ()) {
// 位置指令
RS_WriteWordData (1, RS_ADDRESS_GOAL_POSITION, now, 10, NULL);
// 位置取得
RS_ReadWordData (1, RS_ADDRESS_PRESENT_POSITION, &p, 10, NULL);
fd_printf("goal pos=%5d, present pos=%5d\r",now, p);
now += 5;
if (now > 1500) now = -1500;
fd_Wait (10);
}
// モータOFF
fd_RSEnableControl (1, false);
}
仮想アドレス | データ | サイズ |
0 | モータフリー | 1 byte |
1 | 指令位置 | 2 byte |
3 | 現在位置 | 2 byte |
5 | 電流 | 1 byte |
6 | 温度 | 1 byte |
IDと仮想アドレスを指定して各APIを呼べば、適宜ICSのプロトコルに変換してサーボモータとおしゃべりしてくれる。
例としてID=0のサーボモータに位置を指令してさらに現在位置を取得する事を繰り返すプログラムを作ってみた。少しだけ紹介していないAPIも使っているが、そこそこシンプルでしょう。
#include <fd.h>
void main (void) {
uint16_t now = 0, p;
// ポートオープン
KRS_ChangeBaudrate (115200);
while (!fd_GetPB ()) {
// 位置指令
KRS_WriteWordData (0, KRS_ADDRESS_GOAL_POSITION, now, 5, NULL);
// 位置取得
KRS_ReadWordData (0, KRS_ADDRESS_PRESENT_POSITION, &p, 5, NULL);
fd_printf("goal pos=%5d, present pos=%5d\r", now, p);
now += 10;
if (now > 16383) now = 0;
fd_Wait (10);
}
// モータOFF
fd_KRSEnableControl (0, false);
}
FREEDOM jr.IIIの新しいサンプルプログラムを公開しました。
ワイヤレスコントローラを使ったメニュー操作だけで、一通りの機能を扱うことができます。
FREEDOMjr.III Operation Sample Programページ
メニュー操作画面をムービーで少し紹介。
トップメニューの構成は以下の通り。