IcsClass  1.0.0
IcsClass.h
[詳解]
1 
18 #ifndef _ics_Servo_h
19 #define _ics_Servo_h
20 #include "arduino.h"
21 
22 
23  //KRR KRC-5FH ボタン定義////////
29 enum KRR_BUTTON : unsigned short
30 {
31  KRR_BUTTON_NONE = 0x0000,
32 
33  //左パッド
34  KRR_BUTTON_UP = 0x0001,
35  KRR_BUTTON_DOWN = 0x0002,
36  KRR_BUTTON_RIGHT = 0x0004,
37  KRR_BUTTON_LEFT = 0x0008,
38 
39  //右パッド
41  KRR_BUTTON_CROSS = 0x0020,
42  KRR_BUTTON_CIRCLE = 0x0040,
43  KRR_BUTTON_SQUARE = 0x0100,
44 
45  KRR_BUTTON_S1 = 0x0200,
46  KRR_BUTTON_S2 = 0x0400,
47  KRR_BUTTON_S3 = 0x0800,
48  KRR_BUTTON_S4 = 0x1000,
49 
50  KRR_BUTTON_FALSE = 0xFFFF
51 };
52 
53 
54 
55 //IcsClassクラス///////////////////////////////////////////////////
60 class IcsClass
61 {
62  //固定値(公開分)
63  public:
64  //サーボID範囲 ////////////////////////////////////
65  static const int MAX_ID = 31;
66  static const int MIN_ID = 0;
67 
68  //サーボ最大最小リミット値
69 
70  static const int MAX_POS = 11500;
71 
72  static const int MIN_POS = 3500;
73 
74  static const int ICS_FALSE = -1;
75 
76  //固定値(非公開分)
77  private:
78 
79  static const float ANGLE_F_FALSE = 9999.9;
80  static const int ANGLE_I_FALSE = 0x7FFF;
81 
82  //各パラメータ設定範囲
83  static const int MAX_127 = 127;
84 
85  static const int MAX_63 = 63;
86 
87  static const int MIN_1 = 1;
88 
89  // static const float MAX_DEG = 135.0;
90  static const float MAX_DEG = 180.0;
91 
92  // static const float MIN_DEG = -135.0;
93  static const float MIN_DEG = -180.0;
94 
95  //static const int MAX_100DEG = 13500;
96  static const int MAX_100DEG = 18000;
97 
98  //static const int MIN_100DEG = -13500;
99  static const int MIN_100DEG = -18000;
100 
101  //クラス内の型定義
102  public:
103 
104 
105 
106 
107 
108  //コンストラクタ、デストラクタ
109  public:
110  //コンストラクタ(construncor)
111  IcsClass(HardwareSerial* icsSerial,int enpin);
112  IcsClass(HardwareSerial* icsSerial,int enpin,long baudrate,int timeout);
113  //デストラクタ(destruntor)
114  ~IcsClass();
115 
116  //変数
117  public:
118 
119 
120  private:
121  HardwareSerial *icsSerial;
122  int enPin;
123  long baudRate;
124  int timeOut;
125 
126  //関数
127  //通信初期化
128  public:
129  bool begin();
130  bool begin(long baudrate,int timeout);
131  bool begin(HardwareSerial *serial,int enpin,long baudrate,int timeout);
132 
133  //イネーブルピンの処理
134  private:
135  inline void enHigh();
136  inline void enLow();
137 
138  //データ送受信
139  public:
140  bool synchronize(byte *txBuf, byte txLen, byte *rxBuf, byte rxLen);
141 
142  //servo関連
143  public:
144 
145  //サーボ位置決め設定
146  int setPos(byte id,unsigned int pos); //目標値設定
147  int setFree(byte id); //サーボ脱力+現在値読込
148 
149  //各種パラメータ書込み
150  int setStrc(byte id, unsigned int strc); //ストレッチ書込 1~127 1(弱) <=> 127(強)
151  int setSpd(byte id, unsigned int spd); //スピード書込 1~127 1(遅い) <=> 127(速い)
152  int setCur(byte id, unsigned int curlim); //電流制限値書込 1~63 1(低い) <=> 63 (高い)
153  int setTmp(byte id, unsigned int tmplim); //温度上限書込 1~127 127(低温) <=> 1(高温)
154  //各種パラメータ読込み
155  int getStrc(byte id); //ストレッチ読込 1~127 1(弱) <=> 127(強)
156  int getSpd(byte id); //スピード読込 1~127 1(遅い)<=> 127(速い)
157  int getCur(byte id); //電流値読込 63←0 | 64→127
158  int getTmp(byte id); //現在温度読込 127(低温)<=> 0(高温)
159  int getPos(byte id); //現在位置読込  ※ICS3.6以降で有効
160 
161  private:
162  //サーボIDリミット
163  byte idMax(byte id);
164 
166  bool maxMin(int maxPos, int minPos, int val);
167 
168  //角度関連
169  public:
170  //角度変換 POSから角度へ変換
171  static int degPos(float deg);
172  //角度変換 角度からPOSへ変換
173  static float posDeg(int pos);
174 
175  //角度変換 x100 POSから角度へ変換
176  static int degPos100(int deg);
177  //角度変換 x100 角度からPOSへ変換
178  static int posDeg100(int pos);
179 
180  //KRR関連
181  public:
182  //KRRからボタンデータ受信
183  unsigned short getKrrButton();
184 
185  //KRRからPAアナログデータ受信
186  int getKrrAnalog(int paCh);
187 
188  //KRRから全データ受信
189  bool getKrrAllData(unsigned short *button,int adData[4]);
190 
191 };
192 
193 #endif
Definition: IcsClass.h:43
シフト3 右手前
Definition: IcsClass.h:47
int setStrc(byte id, unsigned int strc)
サーボモータのストレッチ(保持力)の値を書き込みます
Definition: IcsClass.cpp:390
static const int MIN_ID
サーボIDの最小値
Definition: IcsClass.h:66
unsigned short getKrrButton()
KRRが受信しているボタンのデータを取得します
Definition: IcsClass.cpp:742
Definition: IcsClass.h:42
int getSpd(byte id)
サーボモータのスピード(出力)を読み込みます
Definition: IcsClass.cpp:596
static int degPos(float deg)
角度データ(float型)をポジションデータに変換
Definition: IcsClass.cpp:221
何も押されていない
Definition: IcsClass.h:31
シフト1 左手前
Definition: IcsClass.h:45
static const int MAX_ID
サーボIDの最大値
Definition: IcsClass.h:65
int getStrc(byte id)
サーボモータのストレッチ(保持力)の値を読み込みます
Definition: IcsClass.cpp:557
Definition: IcsClass.h:40
int getTmp(byte id)
サーボモータの現在の温度値を読み込みます
Definition: IcsClass.cpp:671
bool synchronize(byte *txBuf, byte txLen, byte *rxBuf, byte rxLen)
ICS通信の送受信
Definition: IcsClass.cpp:144
シフト2 左奥
Definition: IcsClass.h:46
int setTmp(byte id, unsigned int tmplim)
サーボモータの温度リミット(温度制限)値を変更します
Definition: IcsClass.cpp:513
bool getKrrAllData(unsigned short *button, int adData[4])
KRRが受信しているボタンデータおよびアナログポート(PA)のデータをすべて取得します
Definition: IcsClass.cpp:820
Definition: IcsClass.h:35
KRR_BUTTON
KRRが受信するボタンデータの定義
Definition: IcsClass.h:29
近藤科学のKRSサーボをマイコン経由で動作させるのを1パッケージにまとめたクラス
Definition: IcsClass.h:60
×
Definition: IcsClass.h:41
int setCur(byte id, unsigned int curlim)
サーボモータの電流リミット(電流制限)値を変更します
Definition: IcsClass.cpp:471
static const int ICS_FALSE
ICS通信等々で失敗したときの値
Definition: IcsClass.h:74
エラー値(受信失敗等)
Definition: IcsClass.h:50
IcsClass(HardwareSerial *icsSerial, int enpin)
コンストラクタ
Definition: IcsClass.cpp:19
static const int MIN_POS
サーボのポジション最小値
Definition: IcsClass.h:72
int getCur(byte id)
サーボモータの現在の電流値を読み込みます
Definition: IcsClass.cpp:633
シフト4 右奥
Definition: IcsClass.h:48
bool begin()
通信の初期設定
Definition: IcsClass.cpp:64
static float posDeg(int pos)
ポジションデータを角度データ(float型)に変換
Definition: IcsClass.cpp:243
static const int MAX_POS
サーボのポジション最大値
Definition: IcsClass.h:70
static int degPos100(int deg)
角度データx100(int型)をポジションデータに変換
Definition: IcsClass.cpp:266
int getKrrAnalog(int paCh)
KRRが受信している指定したアナログポート(PA)のデータを取得します
Definition: IcsClass.cpp:779
int setSpd(byte id, unsigned int spd)
サーボモータのスピード(出力)を変更します
Definition: IcsClass.cpp:430
static int posDeg100(int pos)
ポジションデータを角度データ(int型)に変換
Definition: IcsClass.cpp:288
int setFree(byte id)
サーボモータをフリー(脱力)状態にします
Definition: IcsClass.cpp:349
int getPos(byte id)
サーボモータの現在のポジションデータを読み込みます
Definition: IcsClass.cpp:707
~IcsClass()
デストラクタ
Definition: IcsClass.cpp:47
Definition: IcsClass.h:34
Definition: IcsClass.h:37
Definition: IcsClass.h:36
int setPos(byte id, unsigned int pos)
サーボモータの角度を変更します
Definition: IcsClass.cpp:312