IcsClass  2.0.0
公開メンバ関数 | 静的公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 静的限定公開変数類 | 全メンバ一覧
IcsBaseClass クラス

近藤科学のICS 3.5/3.6 サーボモータをマイコン経由で動作させるための基クラス [詳解]

#include <IcsBaseClass.h>

IcsBaseClass の継承関係図
IcsHardSerialClass IcsSoftSerialClass

公開メンバ関数

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

限定公開メンバ関数

byte idMax (byte id)
 サーボIDが範囲内か見る [詳解]
 
bool maxMin (int maxPos, int minPos, int val)
 ポジションデータの最大、最小値の範囲に収める [詳解]
 

静的限定公開変数類

static constexpr float ANGLE_F_FALSE = 9999.9
 角度計算時、範囲内に入ってない場合は999.9にする(負側の場合はマイナスをつける)
 
static constexpr int ANGLE_I_FALSE = 0x7FFF
 角度計算時、範囲内に入ってない場合は0x7FFFにする(負側の場合はマイナスをつける)
 
static constexpr int MAX_127 = 127
 パラメータの最大値
 
static constexpr int MAX_63 = 63
 パラメータの最大値(電流値)
 
static constexpr int MIN_1 = 1
 パラメータの最小値
 
static constexpr float MAX_DEG = 180.0
 角度の最大値
 
static constexpr float MIN_DEG = -180.0
 角度の最大値
 
static constexpr int MAX_100DEG = 18000
 角度(x100)の最大値
 
static constexpr int MIN_100DEG = -18000
 角度(x100)の最小値
 

詳解

近藤科学のICS 3.5/3.6 サーボモータをマイコン経由で動作させるための基クラス

Arduino用にHardwareSerial,SoftwareSerialが使えるように基クラスを作成

関数詳解

§ degPos()

int IcsBaseClass::degPos ( float  deg)
static

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

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

§ degPos100()

int IcsBaseClass::degPos100 ( int  deg)
static

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

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

§ getCur()

int IcsBaseClass::getCur ( byte  id)

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

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

§ getKrrAllData()

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

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

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

§ getKrrAnalog()

int IcsBaseClass::getKrrAnalog ( int  paCh)

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

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

§ getKrrButton()

unsigned short IcsBaseClass::getKrrButton ( )

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

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

§ getPos()

int IcsBaseClass::getPos ( byte  id)

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

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

§ getSpd()

int IcsBaseClass::getSpd ( byte  id)

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

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

§ getStrc()

int IcsBaseClass::getStrc ( byte  id)

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

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

§ getTmp()

int IcsBaseClass::getTmp ( byte  id)

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

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

§ idMax()

byte IcsBaseClass::idMax ( byte  id)
protected

サーボIDが範囲内か見る

引数
[in]id
戻り値
送られてきたid
戻り値
0xFF範囲外

§ maxMin()

bool IcsBaseClass::maxMin ( int  maxPos,
int  minPos,
int  val 
)
protected

ポジションデータの最大、最小値の範囲に収める

引数
[in]maxPos最大値
[in]minPos最小値
[in,out]val現在値
戻り値
リミットがかかったポジションデータ

§ posDeg()

float IcsBaseClass::posDeg ( int  pos)
static

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

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

§ posDeg100()

int IcsBaseClass::posDeg100 ( int  pos)
static

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

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

§ setCur()

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

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

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

§ setFree()

int IcsBaseClass::setFree ( byte  id)

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

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

§ setPos()

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

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

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

§ setSpd()

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

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

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

§ setStrc()

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

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

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

§ setTmp()

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

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

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

§ synchronize()

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

ICS通信の送受信

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

IcsHardSerialClass, IcsSoftSerialClassで再実装されています。


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