ICS_Class  2.1.0
IcsBaseClass.h
[詳解]
1 
34 #ifndef __ics_Base_Servo_h__
35 #define __ics_Base_Servo_h__
36 #include "Arduino.h"
37 
38 
39  //KRR KRC-5FH ボタン定義////////
45 enum KRR_BUTTON : unsigned short
46 {
47  KRR_BUTTON_NONE = 0x0000,
48 
49  //左パッド
50  KRR_BUTTON_UP = 0x0001,
51  KRR_BUTTON_DOWN = 0x0002,
52  KRR_BUTTON_RIGHT = 0x0004,
53  KRR_BUTTON_LEFT = 0x0008,
54 
55  //右パッド
57  KRR_BUTTON_CROSS = 0x0020,
58  KRR_BUTTON_CIRCLE = 0x0040,
59  KRR_BUTTON_SQUARE = 0x0100,
60 
61  KRR_BUTTON_S1 = 0x0200,
62  KRR_BUTTON_S2 = 0x0400,
63  KRR_BUTTON_S3 = 0x0800,
64  KRR_BUTTON_S4 = 0x1000,
65 
66  KRR_BUTTON_FALSE = 0xFFFF
67 };
68 
69 
70 
71 //IcsBaseClassクラス///////////////////////////////////////////////////
78 {
79  //固定値(公開分)
80  public:
81  //サーボID範囲 ////////////////////////////////////
82  static constexpr int MAX_ID = 31;
83  static constexpr int MIN_ID = 0;
84 
85  //サーボ最大最小リミット値
86 
87  static constexpr int MAX_POS = 11500;
88 
89  static constexpr int MIN_POS = 3500;
90 
91  static constexpr int ICS_FALSE = -1;
92 
93  //固定値(非公開分)
94  protected :
95 
96  static constexpr float ANGLE_F_FALSE = 9999.9;
97  static constexpr int ANGLE_I_FALSE = 0x7FFF;
98 
99  //各パラメータ設定範囲
100  static constexpr int MAX_127 = 127;
101 
102  static constexpr int MAX_63 = 63;
103 
104  static constexpr int MIN_1 = 1;
105 
106  // static const float MAX_DEG = 135.0;
107  static constexpr float MAX_DEG = 180.0;
108 
109  // static const float MIN_DEG = -135.0;
110  static constexpr float MIN_DEG = -180.0;
111 
112  //static const int MAX_100DEG = 13500;
113  static constexpr int MAX_100DEG = 18000;
114 
115  //static const int MIN_100DEG = -13500;
116  static constexpr int MIN_100DEG = -18000;
117 
118  //クラス内の型定義
119  public:
120 
121  //コンストラクタ、デストラクタ
122  public:
123  //コンストラクタ(construncor)
124 
125  //変数
126  public:
127 
128 
129  protected :
130 
131  //関数
132 
133  //データ送受信
134  public:
135  //データ送受信 /////////////////////////////////////////////////////////////////////////////////////////////
147  virtual bool synchronize(byte *txBuf, byte txLen, byte *rxBuf, byte rxLen);
148 
149  //servo関連
150  public:
151 
152  //サーボ位置決め設定
153  int setPos(byte id,unsigned int pos); //目標値設定
154  int setFree(byte id); //サーボ脱力+現在値読込
155 
156  //各種パラメータ書込み
157  int setStrc(byte id, unsigned int strc); //ストレッチ書込 1~127 1(弱) <=> 127(強)
158  int setSpd(byte id, unsigned int spd); //スピード書込 1~127 1(遅い) <=> 127(速い)
159  int setCur(byte id, unsigned int curlim); //電流制限値書込 1~63 1(低い) <=> 63 (高い)
160  int setTmp(byte id, unsigned int tmplim); //温度上限書込 1~127 127(低温) <=> 1(高温)
161  //各種パラメータ読込み
162  int getStrc(byte id); //ストレッチ読込 1~127 1(弱) <=> 127(強)
163  int getSpd(byte id); //スピード読込 1~127 1(遅い)<=> 127(速い)
164  int getCur(byte id); //電流値読込 63←0 | 64→127
165  int getTmp(byte id); //現在温度読込 127(低温)<=> 0(高温)
166  int getPos(byte id); //現在位置読込  ※ICS3.6以降で有効
167 
168  int getID();
169  int setID(byte id);
170 
171  protected :
172  //サーボIDリミット
173  byte idMax(byte id);
174 
176  bool maxMin(int maxPos, int minPos, int val);
177 
178  //角度関連
179  public:
180  //角度変換 POSから角度へ変換
181  static int degPos(float deg);
182  //角度変換 角度からPOSへ変換
183  static float posDeg(int pos);
184 
185  //角度変換 x100 POSから角度へ変換
186  static int degPos100(int deg);
187  //角度変換 x100 角度からPOSへ変換
188  static int posDeg100(int pos);
189 
190  //KRR関連
191  public:
192  //KRRからボタンデータ受信
193  unsigned short getKrrButton();
194 
195  //KRRからPAアナログデータ受信
196  int getKrrAnalog(int paCh);
197 
198  //KRRから全データ受信
199  bool getKrrAllData(unsigned short *button,int adData[4]);
200 
201 };
202 
203 #endif
KRR_BUTTON
KRRが受信するボタンデータの定義
Definition: IcsBaseClass.h:45
static constexpr int MAX_POS
サーボのポジション最大値
Definition: IcsBaseClass.h:87
int setStrc(byte id, unsigned int strc)
サーボモータのストレッチ(保持力)の値を書き込みます
Definition: IcsBaseClass.cpp:236
static constexpr int MAX_100DEG
角度(x100)の最大値
Definition: IcsBaseClass.h:113
static constexpr float MAX_DEG
角度の最大値
Definition: IcsBaseClass.h:107
Definition: IcsBaseClass.h:58
static constexpr int MIN_POS
サーボのポジション最小値
Definition: IcsBaseClass.h:89
static int degPos100(int deg)
角度データx100(int型)をポジションデータに変換
Definition: IcsBaseClass.cpp:105
int setID(byte id)
ICSデバイスのIDを書き込む
Definition: IcsBaseClass.cpp:628
int setFree(byte id)
サーボモータをフリー(脱力)状態にします
Definition: IcsBaseClass.cpp:195
bool getKrrAllData(unsigned short *button, int adData[4])
KRRが受信しているボタンデータおよびアナログポート(PA)のデータをすべて取得します
Definition: IcsBaseClass.cpp:743
static constexpr int MIN_100DEG
角度(x100)の最小値
Definition: IcsBaseClass.h:116
シフト1 左手前
Definition: IcsBaseClass.h:61
int setSpd(byte id, unsigned int spd)
サーボモータのスピード(出力)を変更します
Definition: IcsBaseClass.cpp:276
何も押されていない
Definition: IcsBaseClass.h:47
int getStrc(byte id)
サーボモータのストレッチ(保持力)の値を読み込みます
Definition: IcsBaseClass.cpp:404
int setCur(byte id, unsigned int curlim)
サーボモータの電流リミット(電流制限)値を変更します
Definition: IcsBaseClass.cpp:318
int getPos(byte id)
サーボモータの現在のポジションデータを読み込みます
Definition: IcsBaseClass.cpp:554
static constexpr int ICS_FALSE
ICS通信等々で失敗したときの値
Definition: IcsBaseClass.h:91
エラー値(受信失敗等)
Definition: IcsBaseClass.h:66
static constexpr int MAX_63
パラメータの最大値(電流値)
Definition: IcsBaseClass.h:102
static float posDeg(int pos)
ポジションデータを角度データ(float型)に変換
Definition: IcsBaseClass.cpp:82
シフト2 左奥
Definition: IcsBaseClass.h:62
static constexpr float MIN_DEG
角度の最大値
Definition: IcsBaseClass.h:110
Definition: IcsBaseClass.h:52
int setTmp(byte id, unsigned int tmplim)
サーボモータの温度リミット(温度制限)値を変更します
Definition: IcsBaseClass.cpp:360
Definition: IcsBaseClass.h:50
int getSpd(byte id)
サーボモータのスピード(出力)を読み込みます
Definition: IcsBaseClass.cpp:443
Definition: IcsBaseClass.h:51
シフト4 右奥
Definition: IcsBaseClass.h:64
unsigned short getKrrButton()
KRRが受信しているボタンのデータを取得します
Definition: IcsBaseClass.cpp:665
static constexpr int MIN_1
パラメータの最小値
Definition: IcsBaseClass.h:104
int getID()
ICSデバイスのIDを取得する
Definition: IcsBaseClass.cpp:589
static constexpr int MAX_ID
サーボIDの最大値
Definition: IcsBaseClass.h:82
bool maxMin(int maxPos, int minPos, int val)
ポジションデータの最大、最小値の範囲に収める
Definition: IcsBaseClass.cpp:40
シフト3 右手前
Definition: IcsBaseClass.h:63
int getTmp(byte id)
サーボモータの現在の温度値を読み込みます
Definition: IcsBaseClass.cpp:518
int setPos(byte id, unsigned int pos)
サーボモータの角度を変更します
Definition: IcsBaseClass.cpp:151
int getCur(byte id)
サーボモータの現在の電流値を読み込みます
Definition: IcsBaseClass.cpp:480
byte idMax(byte id)
サーボIDが範囲内か見る
Definition: IcsBaseClass.cpp:19
近藤科学のICS 3.5/3.6 サーボモータをマイコン経由で動作させるための基クラス
Definition: IcsBaseClass.h:77
static constexpr float ANGLE_F_FALSE
角度計算時、範囲内に入ってない場合は999.9にする(負側の場合はマイナスをつける)
Definition: IcsBaseClass.h:96
Definition: IcsBaseClass.h:53
static constexpr int ANGLE_I_FALSE
角度計算時、範囲内に入ってない場合は0x7FFFにする(負側の場合はマイナスをつける)
Definition: IcsBaseClass.h:97
Definition: IcsBaseClass.h:56
static constexpr int MIN_ID
サーボIDの最小値
Definition: IcsBaseClass.h:83
static int degPos(float deg)
角度データ(float型)をポジションデータに変換
Definition: IcsBaseClass.cpp:60
int getKrrAnalog(int paCh)
KRRが受信している指定したアナログポート(PA)のデータを取得します
Definition: IcsBaseClass.cpp:702
×
Definition: IcsBaseClass.h:57
static int posDeg100(int pos)
ポジションデータを角度データ(int型)に変換
Definition: IcsBaseClass.cpp:127
Definition: IcsBaseClass.h:59
virtual bool synchronize(byte *txBuf, byte txLen, byte *rxBuf, byte rxLen)
ICS通信の送受信
static constexpr int MAX_127
パラメータの最大値
Definition: IcsBaseClass.h:100