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