Roller485のArduinoプログラムですが、公式にもサンプルプログラムにも説明がほぼ皆無なので、ライブラリ内の注釈を翻訳して整理しました。なお、量が膨大なのでi2C制御部分だけで、翻訳はChatGPTに依頼しています。ここが変とかあればコメントお願いします。
M5Unit-Rollerライブラリ
ライブラリ内ファイル(unit_rolleri2c.hpp)のメモ
※関数右側の「V」をクリックすると詳細説明を展開します(説明文はChatGPT翻訳)
UnitRollerI2Cクラス
基本設定
I2C通信設定でUnitRollerI2Cオブジェクトを初期化します。
この関数は、指定されたSDAおよびSCLピンでI2Cバスを設定し、クロック速度を設定して、指定されたアドレスのデバイスとの通信を確認します。
初回送信に対してデバイスが応答すればtrueを返し、そうでなければfalseを返します。
・変数:wire I2C通信に使用するTwoWireオブジェクトへのポインタ。
・変数:addr 通信するデバイスのI2Cアドレス。
・変数:sda SDAラインに使用するGPIOピン番号。
・変数:scl SCLラインに使用するGPIOピン番号。
・戻り値 初期化が成功し、デバイスが応答する場合はtrue、それ以外の場合はfalse。
※補足 この関数は、デバイスとの他の通信を開始する前に呼び出すことを推奨します。I2C設定後にデバイスが安定するための遅延が含まれています。
UnitRollerI2Cデバイスの動作モードを設定します。
この関数は、UnitRollerI2Cデバイスのモードレジスタに1バイトを書き込み、
動作モードを設定します。
希望する動作モードは入力パラメータで指定します。
・変数:mode 希望する動作モードを表す1バイトの値:
- 1 (ROLLER_MODE_SPEED): スピードモード
- 2 (ROLLER_MODE_POSITION): ポジションモード
- 3 (ROLLER_MODE_CURRENT): 電流モード
- 4 (ROLLER_MODE_ENCODER): エンコーダーモード
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。
書き込み対象の特定のレジスタは、定数 UnitRollerI2C_MODE_REG で識別されます。
UnitRollerI2Cデバイスからモーターの現在の動作モードを取得します。
この関数はモーターが現在動作しているモードを示す1バイトの値を読み取ります。
取得したモードはモーターの動作設定を理解するために使用できます。
・戻り値: uint8_t モーターモード:
- 1: スピードモード
- 2: ポジションモード
- 3: 電流モード
- 4: エンコーダモード
その他の値はデバイスの実装により異なるモードを示す場合があります。
※補足 レジスタ(UnitRollerI2C_MODE_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスの出力を有効または無効にします。
この関数は、UnitRollerI2Cデバイスの出力レジスタに1バイトを書き込み、出力を有効にするか無効にするかを制御します。
入力パラメータの値によって出力状態が決まります。
・変数:en 希望する出力状態を表す1バイトの値:
- 0: 出力を無効化
- 1: 出力を有効化
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_OUTPUT_REG で識別されます。
UnitRollerI2Cデバイスからモーターの出力状態を取得します。
この関数はモーターの現在の出力状態を示す1バイトの値を読み取ります。
取得した状態はモーターがオンかオフかを示します。
・戻り値: uint8_t 出力状態:
- 0: モーターオフ
- 1: モーターオン
その他の値はデバイスの実装により異なる状態を示す場合があります。
※補足 レジスタ(UnitRollerI2C_OUTPUT_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
回転速度制御(スピードモード)関連
UnitRollerI2Cデバイスの速度を設定します。
この関数は、UnitRollerI2Cデバイスの速度レジスタに32ビット整数値を書き込み、モーターの速度を設定します。
速度の値は正または負が可能で、正の値は通常前進(時計回り)、負の値は後進(反時計回り)を示します。
・変数:speed モーターの希望速度(rpm*100)を表す32ビット整数(10,000 = 100rpm)。
有効な範囲は、UnitRollerI2Cデバイスの実装や仕様に依存します。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_SPEED_REG で識別されます。
UnitRollerI2Cデバイスから設定した(目標の)速度値を取得します。
この関数は、デバイスが設定または指令された速度を表す32ビット整数値を読み取ります。
・戻り値: モーターの希望速度(rpm*100)を表す32ビット整数(10,000 = 100rpm)。
※補足 UnitRollerI2C_SPEED_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスの速度制御用PID(比例・積分・微分)係数を設定します。
この関数は、3つの32ビット符号なし整数値をUnitRollerI2CデバイスのPID係数レジスタに書き込みます。
これらの係数はPID制御アルゴリズムで使用され、モーター速度を精密に制御します。
制御は現在の誤差、過去の誤差の累積、誤差の変化率に基づき行われます。
・変数:p PID制御器の比例係数(32ビット符号なし整数)。現在の誤差に対する制御の強さを決定します。
例: モーターP=0.004 の場合、speedP 設定値 = 0.004*100000 = 400
・変数:i PID制御器の積分係数(32ビット符号なし整数)。誤差の累積に基づいて出力を調整し、定常状態誤差を除去します。
例: モーターI=0.002 の場合、speedI 設定値 = 0.002*10000000 = 20000
・変数:d PID制御器の微分係数(32ビット符号なし整数)。誤差の変化率に基づいて将来の誤差を予測し、オーバーシュートを減らす減衰効果を与えます。
例: モーターD=16.00 の場合、speedD 設定値 = 16.00*100000 = 1600000
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_SPEED_PID_REG で識別されます。係数は比例 → 積分 → 微分 の順で送信されます。
UnitRollerI2Cデバイスから速度制御用のPIDパラメータを取得します。
この関数は、速度制御用のPIDループで使用される比例(P)、積分(I)、微分(D)の各値をデバイスのレジスタから読み取ります。
取得した値は、それぞれのポインタが指す変数に格納されます。
・変数:p 比例係数を格納するためのuint32_t型ポインタ。
・変数:i 積分係数を格納するためのuint32_t型ポインタ。
・変数:d 微分係数を格納するためのuint32_t型ポインタ。
※補足 この関数はUnitRollerI2C_SPEED_PID_REGから12バイトを読み取り、最初の4バイトがP値、次の4バイトがI値、最後の4バイトがD値に対応します。
呼び出す前にI2C通信が初期化されていることを確認してください。
UnitRollerI2Cデバイスの速度制御における最大電流制限を設定します。
この関数は、UnitRollerI2Cデバイスの最大電流レジスタに32ビット整数値を書き込みます。
これにより、モーターが最高速度で動作する際に消費できる電流の上限を設定し、デバイスの過熱や損傷を防ぎます。
・変数:current 希望する電流制限値(mA*100)を表す32ビット符号付き整数(100,000 = 1,000mA)。
有効な範囲は -120,000 ~ 120,000 で、ミリアンペア単位の許容電流値に対応します。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_SPEED_MAX_CURRENT_REG で識別されます。
UnitRollerI2Cデバイスから設定速度時の最大許容電流値を取得します。
この関数は、デバイスが設定された速度で動作中に最大で許容される電流(32ビット整数)を読み取ります。
・戻り値: int32_t 最大電流値(符号付き32ビット整数)。単位はmA(ミリアンペア)など、仕様に依存します。
※補足 UnitRollerI2C_SPEED_MAX_CURRENT_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
回転角度制御(ポジションモード)関連
UnitRollerI2Cデバイスの位置を設定します。
この関数は、UnitRollerI2Cデバイスの位置レジスタに32ビット整数値を書き込み、動作における目標位置を設定します。
位置の値は正または負が可能で、具体的な動作や実装内容により意味が異なります。
・変数:pos 希望する位置を表す32ビット整数。有効な範囲は、用途やUnitRollerI2Cデバイスの仕様によって異なります。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_POS_REG で識別されます。
UnitRollerI2Cデバイスから現在の設定した(目標の)位置を取得します。
この関数は、デバイスの現在位置を示す32ビット整数値を読み取ります。
単位はカウント数、度数など仕様に依存します。
・戻り値: int32_t 現在位置値(符号付き32ビット整数)。
※補足 UnitRollerI2C_POS_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスの位置制御における最大電流制限を設定します。
この関数は、UnitRollerI2Cデバイスの最大電流レジスタに32ビット整数値を書き込みます。
これにより、モーターが最大位置で動作する際に消費できる電流の上限を設定し、過熱を防ぎ、安全な動作を保証します。
・変数:current 希望する電流制限値(mA*100)を表す32ビット符号付き整数(100,000 = 1,000mA)。有効な範囲は -120,000 ~ 120,000 で、ミリアンペア単位の許容電流値に対応します。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_POS_MAX_CURRENT_REG で識別されます。
UnitRollerI2Cデバイスから設定位置時の最大許容電流値を取得します。
この関数は、デバイスが設定された位置で動作中に最大で許容される電流(32ビット整数)を読み取ります。
・戻り値: int32_t 電流制限値(mA*100)を表す32ビット符号付き整数(100,000 = 1,000mA)。
※補足 UnitRollerI2C_POS_MAX_CURRENT_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスの位置制御用PID(比例・積分・微分)係数を設定します。
この関数は、3つの32ビット符号なし整数値をUnitRollerI2CデバイスのPID係数レジスタに書き込みます。
これらの係数はPID制御アルゴリズムで使用され、モーター位置を正確に制御します。
制御は現在の位置誤差、過去の誤差の累積、誤差の変化率に基づき行われます。
・変数:p PID制御器の比例係数(32ビット符号なし整数)。現在の位置誤差に対する制御の強さを決定します。
例: モーターP=0.004 の場合、speedP 設定値 = 0.004*100000 = 400
・変数:i PID制御器の積分係数(32ビット符号なし整数)。誤差の累積に基づいて出力を調整し、定常状態誤差を除去します。
例: モーターI=0.002 の場合、speedI 設定値 = 0.002*10000000 = 20000
・変数:d PID制御器の微分係数(32ビット符号なし整数)。誤差の変化率に基づいて将来の誤差を予測し、位置決め時のオーバーシュートを減らす減衰効果を与えます。
例: モーターD=16.00 の場合、speedD 設定値 = 16.00*100000 = 1600000
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_POS_PID_REG で識別されます。係数は比例 → 積分 → 微分 の順で送信されます。
UnitRollerI2Cデバイスから位置制御用のPIDパラメータを取得します。
この関数は、位置制御用のPIDループで使用される比例(P)、積分(I)、微分(D)の各値をデバイスのレジスタから読み取ります。
取得した値は、それぞれのポインタが指す変数に格納されます。
・変数:p 比例係数を格納するためのuint32_t型ポインタ。
・変数:i 積分係数を格納するためのuint32_t型ポインタ。
・変数:d 微分係数を格納するためのuint32_t型ポインタ。
※補足 この関数はUnitRollerI2C_POS_PID_REGから12バイトを読み取り、最初の4バイトがP値、次の4バイトがI値、最後の4バイトがD値に対応します。
呼び出す前にI2C通信が初期化されていることを確認してください。
定電流での回転(電流モード)関連
UnitRollerI2Cデバイスの電流制限を設定します。
この関数は、UnitRollerI2Cデバイスの電流レジスタに32ビット整数値を書き込みます。
これにより、デバイスが動作中に維持すべき電流レベル(ミリアンペア単位など)を指定でき、過電流状態からの保護が可能になります。
・変数:current 希望する電流制限値(mA*100)を表す32ビット符号付き整数(100,000 = 1,000mA)。有効な範囲は -120,000 ~ 120,000 で、ミリアンペア単位の許容電流値に対応します。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_CURRENT_REG で識別されます。
UnitRollerI2Cデバイスから電流値を取得します。
この関数は、デバイスを流れる電流を示す32ビット整数値を読み取ります。
取得した値は一時変数に保存され、呼び出し元に返されます。
・戻り値: int32_t 電流制限値(mA*100)を表す32ビット符号付き整数(100,000 = 1,000mA)。
※補足 UnitRollerI2C_CURRENT_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
回転角度取得(エンコーダーモード)関連
UnitRollerI2Cエンコーダのダイヤルカウンタ値を設定します。
この関数は、UnitRollerI2Cデバイスのダイヤルカウンタレジスタに32ビット整数値を書き込みます。
ダイヤルカウンタはエンコーダの位置や回転数を記録し、角度変位を精密に測定・制御するために使用されます。
※カウントした回転数をリセットしたり、0度位置を設定する時に使用
・変数:counter 希望するダイヤルカウンタ値を表す32ビット符号付き整数。この値は現在のエンコーダ位置を反映するために設定可能で、32ビット符号付き整数の範囲内であれば任意の値を指定できます。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。書き込み対象の特定のレジスタは、定数 UnitRollerI2C_DIAL_COUNTER_REG で識別されます。
UnitRollerI2Cデバイスを使ってモーターのエンコーダ値を取得します。
この関数はモーターのエンコーダの現在位置を示す32ビット整数値を読み取ります。
エンコーダ値はモーターの位置や回転数の追跡に用いられ、精密制御やフィードバックに重要です。
・戻り値: int32_t エンコーダ値(符号付き32ビット整数)。カウント数やティック数など、仕様に依存する単位です。
※補足 UnitRollerI2C_DIAL_COUNTER_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
※補足②:44で一回転(反時計回りが正)。setDialCounter()でリセットされる。より細かい角度や、角度の絶対値を知りたいとき、エンコーダーモード以外のときはgetPosReadback()を使用する。
モーターの現在の情報の取得
UnitRollerI2Cデバイスから実際の速度値を取得します(全モード有効)。
この関数は、現在デバイスが計測している速度(32ビット整数)を読み取ります。
・戻り値: モーターの希望速度(rpm*100)を表す32ビット整数(10,000 = 100rpm)。
※補足 UnitRollerI2C_SPEED_READBACK_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスからリアルタイムの位置値を取得します(全モード有効)。
この関数は、デバイスの現在のリアルタイム位置を示す32ビット整数値を読み取ります。
・戻り値: int32_t リアルタイム位置値(符号付き32ビット整数)。単位はカウント、度数など仕様に依存します。
※補足 UnitRollerI2C_POS_READBACK_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
※補足②:値は角度(deg)*100で360度以上、0未満もカウントされる(時計回りが正、0°=0, 360°=36,000)。Rollerデバイスの電源投入時に回転数はリセットされて-11,550≦d<24,450の値(-115.5°~245.5°)にセットされる(実機での検証なので、デバイスによって異なる可能性あり)。角度ではなく主に何周したかを知りたいときはgetDialCounter()を使用する(エンコーダーモードのみ有効)。
UnitRollerI2Cデバイスからモーターの温度を取得します。
この関数は32ビット整数値を読み取り、モーターの現在の温度を表します。
取得した温度値はモーターの過熱防止および安全な動作のための熱状態監視に重要です。
・戻り値: int32_t モーターの温度値(符号付き32ビット整数)。測定単位はデバイス仕様により異なり、一般的には摂氏度(℃)などです。
※補足 レジスタ(UnitRollerI2C_TEMP_REG)から4バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスからモーターのシステムステータスを取得します。
この関数はモーターの現在の動作状態を示す1バイトの値を読み取ります。
取得したステータスは、モーターが待機中か動作中かエラー状態かを判別するために使用できます。
・戻り値: uint8_t モーターのステータス:
- 0: 待機中
- 1: 動作中
- 2: エラー
その他の値は、デバイスの実装によって異なる状態を示す場合があります。
※補足 レジスタ(UnitRollerI2C_SYS_STATUS_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスからエラーコードを取得します。
この関数はモーターの現在のエラー状態を示す1バイトの値を読み取ります。
取得したエラーコードは過電圧や機械的なジャムなどの問題診断に役立ちます。
・戻り値: uint8_t モーターのエラーコード:
- 0: エラーなし
- 1: 過電圧
- 2: ジャム
その他の値はデバイスの実装によって異なるエラー状態を示す場合があります。
※補足 レジスタ(UnitRollerI2C_ERROR_CODE_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
LED関連
RGBモードを設定します。
この関数は、RGBモードレジスタに値を書き込み、デバイスのRGBライティングの動作モードを設定します。
モードはシステムデフォルトまたはユーザー定義のいずれかに設定できます。
・変数:mode 設定するRGBモードを表すuint8_t値。指定可能な値は以下の通りです:
- 0: システムデフォルトモード
- 1: ユーザー定義モード
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。RGBモードは、UnitRollerI2C_RGB_REG + 3 で識別されるレジスタに書き込むことで設定されます。
UnitRollerI2Cデバイスから現在のRGBモードを取得します。
この関数はRGB出力の現在のモードを示す1バイトの値を読み取ります。
取得した値はRGB設定がシステムデフォルトかユーザー定義かを示します。
・戻り値: uint8_t RGBモード:
- 0: システムデフォルトモード
- 1: ユーザー定義モード
その他の値はデバイスの実装により異なるモードを示す場合があります。
※補足 レジスタ(UnitRollerI2C_RGB_REG + 3)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
RGBカラー値を設定します。
この関数は、指定されたカラー値をBGR形式に変換し、デバイスの適切なレジスタに書き込みます。
・変数:color 設定する16bitのカラー値(RGB565)。色は赤5ビット、緑6ビット、青5ビットで構成されます。
この場合、正しい抽出が行えるよう、適切な形式でcolorパラメータを指定してください。
- R: (color >> 11) & 0x1F (5ビット)
- G: (color >> 5) & 0x3F (6ビット)
- B: color & 0x1F (5ビット)
抽出されたR、G、B成分は標準的なRGB値に対応させるために8ビットへ拡張されます。
※補足 抽出と拡張のアルゴリズム:
- 赤成分は 255 を掛け、31 で割って8ビットに拡張。
- 緑成分は 255 を掛け、63 で割って8ビットに拡張。
- 青成分は 255 を掛け、31 で割って8ビットに拡張。
最終的にR、G、Bの値はBGR形式のバイト配列として格納され、writeBytes関数を介してデバイスに書き込まれます。
UnitRollerI2CデバイスからRGB値を取得します。
この関数は、指定されたI2Cアドレスから3バイトのRGBデータを読み取り、渡されたポインタにそれぞれの値を格納します。
RGBの順序は以下の通りです:
- R: data[2]
- G: data[1]
- B: data[0]
・変数:r 赤の値を格納するためのuint8_t型ポインタ。
・変数:g 緑の値を格納するためのuint8_t型ポインタ。
・変数:b 青の値を格納するためのuint8_t型ポインタ。
※補足 ポインタが有効なメモリ領域を指していることを確認してください。
UnitRollerI2CデバイスのRGB LEDの明るさを設定します。
この関数は、UnitRollerI2CデバイスのRGB明るさレジスタに1バイトの値を書き込み、RGB LEDの明るさレベルを調整します。
明るさレベルは、定義された範囲内の値で指定します。
・変数:brightness 設定する明るさレベルを表す1バイトの値(0~100の範囲)。
- 0: 消灯
- 100: 最大輝度
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。
書き込み先のレジスタは、定数 UnitRollerI2C_RGB_BRIGHTNESS_REG で指定されます。
UnitRollerI2CデバイスからRGB出力の明るさレベルを取得します。
この関数はRGB LEDの現在の明るさ設定を示す1バイトの値を読み取ります。
取得した値はRGB出力の強度を判定するために使用されます。
・戻り値: uint8_t RGBの明るさレベル。一般的に以下のようなスケールで表されます:
- 0: 最小明るさ(オフ)
- 100: 最大明るさ(最大点灯)
その他の値はデバイス設定により異なる明るさレベルを示します。
※補足 レジスタ(UnitRollerI2C_RGB_BRIGHTNESS_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
I2C設定
UnitRollerI2CデバイスのI2Cアドレスを設定します。
この関数は、通信に使用するI2Cアドレスを変更し、新しいアドレスをデバイスに送信して通信設定を動的に変更します。
・変数:addr 設定する新しいI2Cアドレス(1〜127の範囲内の有効なアドレス)。
・戻り値: uint8_t 設定後のI2Cアドレス。
※補足 指定したアドレスがI2Cバス上の他のデバイスと競合しないことを確認してください。
また、デバイスが通電し正しく接続されていることを確認した上で呼び出してください。
UnitRollerI2CデバイスからI2Cアドレスを取得します。
この関数はデバイスの現在のI2Cアドレス設定を読み取ります。
マルチデバイス環境で通信設定を理解するのに役立ちます。
・戻り値: uint8_t デバイスのI2Cアドレス。通信に使用されるアドレスです。
※補足 指定アドレス(_addr)へI2C送信を開始し、レジスタ(I2C_ADDRESS_REG)から読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
モーター設定関連
モーターの位置範囲保護機構を設定します。
この関数は、モーターの位置範囲保護機構を有効または無効にします。
・変数:en 保護機構を有効 (1) または無効 (0) にするための uint8_t 値。
- 0: 無効
- 1: 有効
詳細:この関数は、指定された値を専用レジスタに書き込み、動作中のモーターの位置範囲保護を制御します。
保護機構により、モーターが安全な動作範囲を超えないようにし、潜在的な損傷を防ぎます。
モーターの位置範囲保護機構の現在の状態を取得します。
この関数は位置範囲保護機構の有効・無効状態を示す値を指定のレジスタから読み取ります。
返される値は以下の通りです:
- 0: 無効
- 1: 有効
・戻り値: uint8_t 位置範囲保護の現在の状態(0または1)。
UnitRollerI2C デバイスのスタック(停止)保護機構をリセットします。
この関数は、スタック保護リセットレジスタに特定の値を書き込み、デバイスが検出したスタック状態(モーターの停止状態)をクリアします。
これにより、スタック発生後に通常動作を再開できるようになります。
※補足 値 1 の 1 バイトをレジスタ(UnitRollerI2C_RESET_STALLED_PROTECT_REG) に送信して、スタック保護機能のリセットを開始します。
この関数を呼び出す前に、I2C 通信が正しく初期化されていることを確認してください。
デバイスのスタック保護機能を設定します。
この関数は、UnitRollerI2C デバイスのスタック保護レジスタに 1 バイトを書き込み、スタック保護機能を有効または無効にします。
この機能は、モーターの動作を監視し、必要に応じて対策を講じることでモーターのスタック(停止)を防ぎます。
・変数:en スタック保護機能を有効 (1) または無効 (0) にする 1 バイト値。
※補足 この関数を呼び出す前に、I2C 通信が正しく初期化されていることを確認してください。
書き込み先のレジスタはUnitRollerI2C_STALL_PROTECTION_REG 定数で定義されています。
UnitRollerI2Cデバイスからストール保護機能の現在の状態を取得します。
この関数はストール保護レジスタからバイトを読み取り、ストール保護機能が有効か無効かを判定します。
返される値は以下の通りです:
- 0: 無効
- 1: 有効
※補足 呼び出す前にI2C通信が正しく初期化されていることを確認してください。
読み取るレジスタは UnitRollerI2C_STALL_PROTECTION_REG で定義されています。
UnitRollerI2CデバイスのモーターIDを設定します。
この関数は、UnitRollerI2CデバイスのIDレジスタに1バイトの値を書き込み、モーターIDを設定します。
モーターIDは、複数のモーターが接続されたシステム内でモーターを一意に識別するために使用されます。
・変数:id モーターIDを表す1バイトの値(0~255の範囲)。各モーターは、この範囲内で一意のIDを持つ必要があります。
※補足 この関数を呼び出す前に、I2C通信が正しく初期化されていることを確認してください。
書き込み先のレジスタは、定数 UnitRollerI2C_ID_REG で指定されます。
UnitRollerI2CデバイスからモーターのIDを取得します。
この関数はモーターの一意の識別子を示す1バイトの値を読み取ります。
取得したIDは特に複数のモーターがあるシステムで識別に使用されます。
・戻り値: uint8_t モーターID。一意の識別子であり、モーターの設定や割り当てに依存します。
※補足 レジスタ(UnitRollerI2C_ID_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
キャリブレーション
エンコーダーのキャリブレーションプロセスを開始します。
これは内部の工場用コマンドであり、磁気エンコーダーのキャリブレーションを開始するために使用されます。
※補足 この関数を呼び出す前にI2C通信が正しく初期化されていることを確認してください。
エンコーダーのキャリブレーション値を更新します。
これは内部の工場用コマンドであり、磁気エンコーダーのキャリブレーション値をデバイスに更新します。
※補足 この関数を呼び出す前にI2C通信が正しく初期化されていることを確認してください。
磁気エンコーダーのキャリブレーション状態を取得します。
これは内部の工場用コマンドであり、
キャリブレーションの進行状態を取得します。
・戻り値: uint8_t
1:キャリブレーション中
0:キャリブレーションされていない
※補足 この関数を呼び出す前にI2C通信が正しく初期化されていることを確認してください。
Rollerデバイス本体関連
UnitRollerI2C デバイスの最新の設定変更をフラッシュメモリに保存します。
この関数は、指定されたフラッシュ保存レジスタに値を書き込み、最新の設定を不揮発性フラッシュメモリに保存する処理を開始します。
これにより、電源オフやリセット後も現在のセッションで行った設定変更が保持されます。
※補足 値 1 の 1 バイトをレジスタ(UnitRollerI2C_SAVE_FLASH_REG) に送信して保存処理を開始します。
書き込み後は、保存処理が完了するまで 100 ミリ秒の遅延を入れます。
この関数を呼び出す前に、I2C 通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスから入力電圧値を取得します。
この関数はデバイスに供給されている入力電圧(Vin)を示す32ビット整数値を読み取ります。
電源監視や適正動作確認に有用です。
・戻り値: int32_t 入力電圧値(符号付き32ビット整数)。単位はボルト(V)やミリボルト(mV)など仕様に依存します。
※補足 UnitRollerI2C_VIN_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2C デバイスのキースイッチモードを設定します。
この関数は、UnitRollerI2C デバイスの該当レジスタに 1 バイトを書き込み、キースイッチモードを設定します。入力値により有効・無効を切り替えます。(注記:キースイッチモードが何かはわかりませんでした)
・変数:en キースイッチモードを有効 (1) または無効 (0) にする 1 バイト値。
※補足 この関数を呼び出す前に、I2C 通信が正しく初期化されていることを確認してください。書き込み先のレジスタはUnitRollerI2C_KEY_SWTICH_MODE_REG 定数で定義されています。
UnitRollerI2Cデバイスから現在のキースイッチモードを取得します。
この関数は現在のキースイッチモード設定を示す1バイトの値を読み取ります。
取得した値はボタンスイッチモードが有効かどうか、および動作中の動作方法を示します。
・戻り値: uint8_t キースイッチモード:
- 0: オフ(ボタンスイッチモード無効)
- 1: 動作中に5秒間押し続けるとモード切替
その他の値はデバイスの実装により異なる設定を示す場合があります。
※補足 レジスタ(UnitRollerI2C_KEY_SWTICH_MODE_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスのボーレート(通信速度)を設定します。
この関数はUnitRollerI2Cデバイスのボーレートレジスタにバイトを書き込み、通信速度を設定します。
指定するボーレートは入力パラメータによって決まります。
・変数:bps 設定したいボーレートを表すバイト値:
- 0: 115200 bps
- 1: 19200 bps
- 2: 9600 bps
※補足 この関数を呼び出す前に、I2C通信が適切に初期化されていることを確認してください。書き込み対象のレジスタは定数 UnitRollerI2C_BPS_REG で指定されています。
UnitRollerI2Cデバイスから通信速度(BPS)設定を取得します。
この関数は通信インターフェースの現在のボーレート設定を示す1バイトの値を読み取ります。
取得した値は通信に使用されている速度を示します。
・戻り値: uint8_t ボーレート設定:
- 0: 115200 bps
- 1: 19200 bps
- 2: 9600 bps
その他の値はデバイスの実装により異なる設定を示す場合があります。
※補足 レジスタ(UnitRollerI2C_BPS_REG)から1バイトを読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスからファームウェアのバージョンを取得します。
この関数はデバイスにリクエストを送り、現在のファームウェアバージョンを読み取ります。
デバッグやソフトウェアの互換性確認に役立ちます。
・戻り値: uint8_t ファームウェアバージョン(1バイト)。この値の解釈はデバイスメーカーのバージョン管理方式によります。
※補足 指定アドレス(_addr)へI2C送信を開始し、レジスタ(FIRMWARE_VERSION_REG)から読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2Cデバイスからリアルタイム電流値を取得します。
この関数は、デバイスを流れるリアルタイムの電流値(32ビット整数)を読み取ります。
取得した値はデバイスの実際の消費電流を示し、動作監視や安全管理に役立ちます。
・戻り値: int32_t リアルタイム電流値(符号付き32ビット整数)。単位はミリアンペア(mA)など仕様に依存します。
※補足 UnitRollerI2C_CURRENT_READBACK_REGから4バイト読み取ります。
呼び出す前にI2C通信が正しく初期化されていることを確認してください。
UnitRollerI2C privateクラス(多分使わない)
uint8_t _addr
TwoWire *_wire
uint8_t _scl
uint8_t _sda
uint32_t _speed
デバイスの特定のレジスタに複数バイトを書き込みます。
この関数は指定したI2Cアドレスに対して通信を開始し、レジスタアドレスを書き込んだ後、バッファ内の複数バイトを連続で送信し、通信を終了します。
・変数:addr 通信対象のI2Cデバイスアドレス。
・変数:reg 書き込み対象のレジスタアドレス。
・変数:buffer 書き込むデータのバイト配列へのポインタ。
・変数:length 書き込むバイト数。
※補足 通信が失敗すると、デバイスからの応答が得られないことがあります。
必要に応じてendTransmission()の戻り値を確認してください。
デバイスの特定のレジスタから複数バイトを読み取ります。
この関数は指定したI2Cアドレスに対して通信を開始し、読み取り対象のレジスタアドレスを書き込んだ後、指定したバイト数をデバイスから読み取り、バッファに格納します。
・変数:addr 通信対象のI2Cデバイスアドレス。
・変数:reg 読み取り対象のレジスタアドレス。
・変数:buffer 読み取ったデータを格納するバイト配列へのポインタ。
・変数:length 読み取るバイト数。
※補足 通信中にリピートスタート条件を使用し、endTransmission()にfalseを渡すことでバスを解放せずに読み取ります。
対象デバイスが要求されたデータを提供可能であることを確認してください。
float値をバイト配列に変換します。
この関数は4バイト(標準32bit float想定)のバイト配列を受け取り、
浮動小数点数に変換します。unionを使ってバイト列をfloatとして解釈します。
・変数:s 浮動小数点値を表すバイト配列へのポインタ。
・戻り値: 入力バイト配列が表す浮動小数点数。
※補足 入力配列が少なくとも4バイト含むことを保証してください。
バイト配列を浮動小数点数に変換します。
この関数は浮動小数点数を受け取り、4バイト(標準32bit float想定)のバイト配列に変換します。
unionを使ってfloatのビット表現をそのままバイト列として扱います。
・変数:s 変換する浮動小数点値。
・変数:d 変換結果のバイト配列を格納する先のポインタ。
※補足 呼び出し元は、dが4バイト以上の領域であることを保証してください。
コメント