IcsClass  1.0.0
公開メンバ関数 | 静的公開メンバ関数 | 静的公開変数類 | 全メンバ一覧
IcsClass クラス

近藤科学のKRSサーボをマイコン経由で動作させるのを1パッケージにまとめたクラス [詳解]

#include <IcsClass.h>

公開メンバ関数

 IcsClass (HardwareSerial *icsSerial, int enpin)
 コンストラクタ [詳解]
 
 IcsClass (HardwareSerial *icsSerial, int enpin, long baudrate, int timeout)
 コンストラクタ [詳解]
 
 ~IcsClass ()
 デストラクタ [詳解]
 
bool begin ()
 通信の初期設定 [詳解]
 
bool begin (long baudrate, int timeout)
 通信の初期設定 [詳解]
 
bool begin (HardwareSerial *serial, int enpin, long baudrate, int timeout)
 通信の初期設定 [詳解]
 
bool synchronize (byte *txBuf, byte txLen, byte *rxBuf, byte rxLen)
 ICS通信の送受信 [詳解]
 
int setPos (byte id, unsigned int pos)
 サーボモータの角度を変更します [詳解]
 
int setFree (byte id)
 サーボモータをフリー(脱力)状態にします [詳解]
 
int setStrc (byte id, unsigned int strc)
 サーボモータのストレッチ(保持力)の値を書き込みます [詳解]
 
int setSpd (byte id, unsigned int spd)
 サーボモータのスピード(出力)を変更します [詳解]
 
int setCur (byte id, unsigned int curlim)
 サーボモータの電流リミット(電流制限)値を変更します [詳解]
 
int setTmp (byte id, unsigned int tmplim)
 サーボモータの温度リミット(温度制限)値を変更します [詳解]
 
int getStrc (byte id)
 サーボモータのストレッチ(保持力)の値を読み込みます [詳解]
 
int getSpd (byte id)
 サーボモータのスピード(出力)を読み込みます [詳解]
 
int getCur (byte id)
 サーボモータの現在の電流値を読み込みます [詳解]
 
int getTmp (byte id)
 サーボモータの現在の温度値を読み込みます [詳解]
 
int getPos (byte id)
 サーボモータの現在のポジションデータを読み込みます [詳解]
 
unsigned short getKrrButton ()
 KRRが受信しているボタンのデータを取得します [詳解]
 
int getKrrAnalog (int paCh)
 KRRが受信している指定したアナログポート(PA)のデータを取得します [詳解]
 
bool getKrrAllData (unsigned short *button, int adData[4])
 KRRが受信しているボタンデータおよびアナログポート(PA)のデータをすべて取得します [詳解]
 

静的公開メンバ関数

static int degPos (float deg)
 角度データ(float型)をポジションデータに変換 [詳解]
 
static float posDeg (int pos)
 ポジションデータを角度データ(float型)に変換 [詳解]
 
static int degPos100 (int deg)
 角度データx100(int型)をポジションデータに変換 [詳解]
 
static int posDeg100 (int pos)
 ポジションデータを角度データ(int型)に変換 [詳解]
 

静的公開変数類

static const int MAX_ID = 31
 サーボIDの最大値
 
static const int MIN_ID = 0
 サーボIDの最小値
 
static const int MAX_POS = 11500
 サーボのポジション最大値
 
static const int MIN_POS = 3500
 サーボのポジション最小値
 
static const int ICS_FALSE = -1
 ICS通信等々で失敗したときの値
 

詳解

近藤科学のKRSサーボをマイコン経由で動作させるのを1パッケージにまとめたクラス

構築子と解体子

§ IcsClass() [1/2]

IcsClass::IcsClass ( HardwareSerial *  serial,
int  enpin 
)

コンストラクタ

引数
[in]*serialICSに設定するUART(HardwareSerial型のポインタ)
[in]enpin送受信切替えピンのピン番号

§ IcsClass() [2/2]

IcsClass::IcsClass ( HardwareSerial *  serial,
int  enpin,
long  baudrate,
int  timeout 
)

コンストラクタ

引数
[in]*serialICSに設定するUART(HardwareSerial型のポインタ)
[in]enpin送受信切替えピンのピン番号
[in]bandrateサーボの通信速度
[in]timeout受信タイムアウト(ms)

§ ~IcsClass()

IcsClass::~IcsClass ( )

デストラクタ

事後条件
使用していたのSerialを開放します

関数詳解

§ begin() [1/3]

bool IcsClass::begin ( )

通信の初期設定

戻り値
true通信設定完了
false通信設定失敗
注意
通信速度、タイムアウトは事前に設定してある事

§ begin() [2/3]

bool IcsClass::begin ( long  baudrate,
int  timeout 
)

通信の初期設定

引数
[in]baudrateICSの通信速度(115200,625000,1250000(1.25M)bps)
[in]timeout受信タイムアウト(ms)
戻り値
true通信設定完了
false通信設定失敗
注意
UARTピンおよび送受信切替えピンは設定してある事

§ begin() [3/3]

bool IcsClass::begin ( HardwareSerial *  serial,
int  enpin,
long  baudrate,
int  timeout 
)

通信の初期設定

引数
[in]*serialICSに設定するUART(HardwareSerial型のポインタ)
[in]enpin送受信切替えピンのピン番号
[in]baudrateICSの通信速度(115200,625000,1250000(1.25M)bps)
[in]timeout受信タイムアウト(ms)
戻り値
true通信設定完了
false通信設定失敗

§ degPos()

int IcsClass::degPos ( float  deg)
static

角度データ(float型)をポジションデータに変換

引数
[in]deg角度(deg)(float型)
戻り値
ポジションデータ
戻り値
-1範囲外

§ degPos100()

int IcsClass::degPos100 ( int  deg)
static

角度データx100(int型)をポジションデータに変換

引数
[in]deg角度(deg x100)(int型)
戻り値
変換されたポジションデータ
戻り値
-1範囲外

§ getCur()

int IcsClass::getCur ( byte  id)

サーボモータの現在の電流値を読み込みます

引数
[in]idサーボモータのID番号
戻り値
サーボモータの現在の電流値
戻り値
-1通信失敗
覚え書き
電流値読込 正転時0~63、逆転時64~127

§ getKrrAllData()

bool IcsClass::getKrrAllData ( unsigned short *  button,
int  adData[4] 
)

KRRが受信しているボタンデータおよびアナログポート(PA)のデータをすべて取得します

引数
[out]buttonボタンデータ(KRR_BUTTON を参照)
[out]adData4ch分のアナログデータ
戻り値
ture通信成功
false通信失敗
注意
KRC5のアナログポートは1~4になります
配列サイズは4固定です

§ getKrrAnalog()

int IcsClass::getKrrAnalog ( int  paCh)

KRRが受信している指定したアナログポート(PA)のデータを取得します

引数
[in]paChアナログポートの番号
戻り値
指定したアナログポートのデータ
戻り値
-1通信失敗
注意
KRC5のアナログポートは1~4になります

§ getKrrButton()

unsigned short IcsClass::getKrrButton ( )

KRRが受信しているボタンのデータを取得します

戻り値
KRR_BUTTON を参照
戻り値
-1通信失敗

§ getPos()

int IcsClass::getPos ( byte  id)

サーボモータの現在のポジションデータを読み込みます

引数
[in]idサーボモータのID番号
戻り値
指定したIDの現在のポジションデータ
戻り値
-1通信失敗
注意
ICS3.6から有効です。ICS3.5のサーボモータに送った場合は返事を返しません

§ getSpd()

int IcsClass::getSpd ( byte  id)

サーボモータのスピード(出力)を読み込みます

引数
[in]idサーボモータのID番号
戻り値
読み込んだスピードのデータ
戻り値
-1通信失敗
覚え書き
スピード読込 1~127 1(遅い) 127(速い)

§ getStrc()

int IcsClass::getStrc ( byte  id)

サーボモータのストレッチ(保持力)の値を読み込みます

引数
[in]idサーボモータのID番号
戻り値
読み込んだストレッチのデータ
戻り値
-1通信失敗
覚え書き
ストレッチ読込 1~127 1(弱) 127(強)

§ getTmp()

int IcsClass::getTmp ( byte  id)

サーボモータの現在の温度値を読み込みます

引数
[in]idサーボモータのID番号
戻り値
サーボモータの現在の温度値
戻り値
-1通信失敗
覚え書き
現在温度読込 0(高温) ~ 127(低温

§ posDeg()

float IcsClass::posDeg ( int  pos)
static

ポジションデータを角度データ(float型)に変換

引数
[in]posポジションデータ
戻り値
角度(deg)(float型)
戻り値
#ANGLE_F_FALSE正方向範囲外
-::ANGLE_F_FALSE(0x8000) 負方向範囲外

§ posDeg100()

int IcsClass::posDeg100 ( int  pos)
static

ポジションデータを角度データ(int型)に変換

引数
[in]posポジションデータ
戻り値
角度(deg x100)(int型)
戻り値
#ANGLE_I_FALSE正方向範囲外
-::ANGLE_I_FALSE負方向範囲外

§ setCur()

int IcsClass::setCur ( byte  id,
unsigned int  curlim 
)

サーボモータの電流リミット(電流制限)値を変更します

引数
[in]idサーボモータのID番号
[in]curlim電流値のデータ
戻り値
サーボモータの電流リミット値
戻り値
-1通信失敗
覚え書き
電流制限値書込 1~63 1(低い) 63 (高い)

§ setFree()

int IcsClass::setFree ( byte  id)

サーボモータをフリー(脱力)状態にします

引数
[in]idサーボモータのID番号
戻り値
ポジションデータ
戻り値
-1範囲外、通信失敗

§ setPos()

int IcsClass::setPos ( byte  id,
unsigned int  pos 
)

サーボモータの角度を変更します

引数
[in]idサーボモータのID番号
[in]posポジションデータ
戻り値
ポジションデータ
戻り値
-1範囲外、通信失敗

§ setSpd()

int IcsClass::setSpd ( byte  id,
unsigned int  spd 
)

サーボモータのスピード(出力)を変更します

引数
[in]idサーボモータのID番号
[in]spdスピードのデータ(1~127)
戻り値
書き込んだスピードのデータ
戻り値
-1通信失敗
覚え書き
スピード書込 1~127 1(遅い) 127(速い)

§ setStrc()

int IcsClass::setStrc ( byte  id,
unsigned int  strc 
)

サーボモータのストレッチ(保持力)の値を書き込みます

引数
[in]idサーボモータのID番号
[in]strcストレッチのデータ(1~127)
戻り値
書き込んだストレッチのデータ
戻り値
-1通信失敗
覚え書き
ストレッチ書込 1~127 1(弱) 127(強)

§ setTmp()

int IcsClass::setTmp ( byte  id,
unsigned int  tmplim 
)

サーボモータの温度リミット(温度制限)値を変更します

引数
[in]idサーボモータのID番号
[in]tmplim温度リミット値のデータ
戻り値
サーボモータの温度リミット値
戻り値
-1通信失敗
覚え書き
温度上限書込 1~127 127(低温) 1(高温)

§ synchronize()

bool IcsClass::synchronize ( byte *  txBuf,
byte  txLen,
byte *  rxBuf,
byte  rxLen 
)

ICS通信の送受信

引数
[in,out]*txBuf
[in]txLen
[out]*rxBuf受信格納バッファ
[in]rxLen受信データ数
戻り値
true通信成功
false通信失敗
注意
送信データ数、受信データ数はコマンドによって違うので注意する

このクラス詳解は次のファイルから抽出されました: