ICS_Class 3.0.0
読み取り中…
検索中…
一致する文字列を見つけられません
IcsBaseClass クラス

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

#include <IcsBaseClass.h>

IcsBaseClass の継承関係図
IcsHardSerialClass

公開メンバ関数

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)
 サーボモータの現在のポジションデータを読み込みます
 
int getID ()
 ICSデバイスのIDを取得する
 
int setID (byte id)
 ICSデバイスの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

◆ getID()

int IcsBaseClass::getID ( )

ICSデバイスのIDを取得する

戻り値
返ってきたIDデータ
戻り値
-1範囲外、通信失敗
日付
2020/02/20 Ver2.1.0から追加
注意
IDコマンドは1対1でのみ接続してください。多数つないだ場合は意図しないデータが返って来ます。

◆ 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範囲外、通信失敗

◆ setID()

int IcsBaseClass::setID ( byte id)

ICSデバイスのIDを書き込む

引数
[in]idサーボモータのID番号
戻り値
返ってきたIDデータ
戻り値
-1範囲外、通信失敗
日付
2020/02/20 Ver2.1.0から追加
注意
IDコマンドは1対1でのみ接続してください。多数つないだ場合はすべてのIDが書き変わります。

◆ 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で再実装されています。


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