ローカル変数名のリスト



バージョン表示

変数名 バージョン書式 説明
#define VERSION "Meridian_xxx_for_xxx_20yy.mm.dd" バージョン表示


ライブラリ等のインスタンス

インスタンス名 使用ライブラリ
MERIDIANFLOW::Meridian mrd Meridian.h
WiFiUDP udp WiFiUdp.h
ESP32DMASPI::Slave slave ESP32DMASPISlave.h
ESP32Wiimote wiimote ESP32Wiimote.h
File sdfile SD.h
MPU6050 mpu6050 ESP32Wiimote.h
IcsHardSerialClass ics_L(&Serial2, PIN_EN_L, ICS_BAUDRATE, ICS_TIMEOUT) IcsHardSerialClass.h
IcsHardSerialClass ics_R(&Serial3, PIN_EN_R, ICS_BAUDRATE, ICS_TIMEOUT) IcsHardSerialClass.h
IcsHardSerialClass ics_C(&Serial1, PIN_EN_3, ICS_BAUDRATE, ICS_TIMEOUT) IcsHardSerialClass.h


Meridim配列用の共用体

※ DMA使用時に配列末尾のデータが欠損する仕様を回避するため, 配列要素を多くすることで対策.

Meridim90Union共用体設定 説明
typedef Union {
short sval[MRDM_LEN + 4];
unsigned short usval[MRDM_LEN + 2];
uint8_t bval[ + 4];
uint8_t ubval[MRDM_BYTE + 4];
} Meridim90Union;

short型で90個の配列データを持つ
上記のunsigned short型
byte型で180個の配列データを持つ
上記のunsigned byte型
共用体型名
インスタンス名
s_spi_meridim Meridim配列データ(short型,センサや角度は100倍値)
r_spi_meridim Meridim配列データ(short型,センサや角度は100倍値)
s_spi_meridim_dma SPI送信用
r_spi_meridim_dma SPI受信用
s_spi_meridim_dummy 送信ダミー用
s_udp_meridim UDP送信用
r_udp_meridim UDP受信用
s_udp_meridim_dummy 送信ダミー用


リモコン値格納用の共用体

共用体設定 説明
typedef union {
short sval[PAD_LEN];
uint16_t usval[PAD_LEN];
int8_t bval[PAD_LEN * 2];
uint8_t ubval[PAD_LEN * 2];
uint64_t ui64val[1];
} PadUnion;

short型で5個の配列データを持つ
unsigned short型
byte型で10個の配列データを持つ
unsigned byte型
unsigned int16型の配列データを持つ
共用体型名
インスタンス名
pad_array
pad_array[0] ボタンデータのビットフラグ
pad_array[1] 上位8ビット(int_8):pad.stick_L_x,
下位8ビット(int_8):pad.stick_L_y
pad_array[2] 上位8ビット(int_8):pad.stick_R_x,
下位8ビット(int_8):pad.stick_R_y
pad_array[3] 上位8ビット(uint_8):pad.L2_val,
下位8ビット(uint_8):pad.R2_val
pad_array[4] チェックサム用(Merimote利用時)


リモコン値格納用の構造体

構造体設定 説明
struct PadValue {
unsigned short stick_R = 0;
int stick_R_x = 0;
int stick_R_y = 0;
unsigned short stick_L = 0;
int stick_L_x = 0;
int stick_L_y = 0;
unsigned short stick_L2R2V = 0;
int R2_val = 0;
int L2_val = 0;
};

stick_R: 右スティックの値
stick_R_x: 右スティックのX軸値
stick_R_y: 右スティックのY軸値
stick_L: 左スティックの値
stick_L_x: 左スティックのX軸値
stick_L_y: 左スティックのY軸値
stick_L2R2V: L2とR2の値
R2_val: R2ボタンの値
L2_val: L2ボタンの値
インスタンス名
pad_analog


フラグ用の構造体

構造体設定 説明
struct MrdFlags {
bool imuahrs_available = true;

bool udp_board_passive = false;
bool count_frame_reset = false;
bool stop_board_during = false;
bool eeprom_write_mode = false;
bool eeprom_read_mode = false;
bool eeprom_protect = EEPROM_PROTECT;
bool eeprom_load = EEPROM_LOAD;
bool eeprom_set = EEPROM_SET;
bool sdcard_write_mode = false;
bool sdcard_read_mode = false;
bool wire0_init = false;
bool wire1_init = false;
bool bt_busy = false;
bool spi_trans = true;
bool spi_rcvd = true;
bool udp_rcvd = false;
bool udp_busy = false;
bool meridim_rcvd = false;
bool servoL_drive = false;
bool servoR_drive = false;
bool servoC_drive = false;
};

メインセンサ値を読み取る間,
サブスレッドによる書き込みを待機
UDP通信の周期制御がボード主導(false) か, PC主導(true)か
フレーム管理時計をリセットする
ボードの末端処理を止める
EEPROMへの書き込みモード
EEPROMからの読み込みモード
EEPROMの書き込みプロテクト
起動時にEEPROMの内容を読み込む
起動時にEEPROMに規定値をセット
SDCARDへの書き込みモード
SDCARDからの読み込みモード
I2C 0系統の初期化合否
I2C 1系統の初期化合否
Bluetoothの受信中フラグ(UDPコンフリクト回避用)
ESP32とのSPI通信の実施
SPIのデータ受信判定
UDPのデータ受信判定
UDPスレッドでの受信中フラグ(送信抑制)
Meridimが正しく受信できたか
L系統のサーボの送受信
R系統のサーボの送受信
C系統のサーボの送受信
インスタンス名
flg


シーケンス番号用の構造体

構造体設定 説明
struct MrdSq {
int s_increment = 0;
int r_expect = 0;
};

送信用にフレーム毎に0-59999をカウント
受信値との比較用にフレーム毎に0-59999をカウント
インスタンス名
mrdsq


タイマー用の構造体

構造体設定 説明
struct MrdTimer {
long frame_ms = FRAME_DURATION;
int loop_count = 0;
int loop_count_dlt = 2;
int loop_count_max = 359999;
};
タイマー管理用の構造体設定. 各変数の説明:
1フレームあたりの単位時間(ms)
サイン計算用の循環カウンタ
サイン計算用の循環カウンタを1フレームにいくつ進めるか
循環カウンタの最大値
インスタンス名
tmr


エラーカウント用の構造体

構造体設定 説明
struct MrdErr {
int esp_pc = 0;
int pc_esp = 0;
int esp_tsy = 0;
int tsy_esp = 0;
int board_dly = 0;
int esp_skip = 0;
int tsy_skip = 0;
int pc_skip = 0;
};

ESP32 → PC のUDP受信エラー
PC → ESP32 のUDP受信エラー
ESP32 → TeensyのSPI受信エラー
Teensy → ESP32 のSPI受信エラー
Teensy or ESP32のシステムディレイ (末端で捕捉)
PC → ESP32 のUDPフレームスキップエラー
PC → ESP32 → Teensy のフレームスキップエラー(末端で捕捉)
Teensy → ESP32 → PC のフレームスキップエラー(末端で捕捉)
インスタンス名
err


EEPROM読み書き用共用体

共用体設定 説明
typedef union {
uint8_t bval[EEPROM_SIZE];
short saval[3][int(EEPROM_SIZE / 4)];
short sval[int(EEPROM_SIZE / 2)];
} UnionEEPROM;

1バイト単位で540個のデータを持つ
short型で3*90個の配列データを持つ
short型で270個のデータを持つ

インスタンス名
eeprom_write_data EEPROM書き込み用
eeprom_read_data EEPROM読み込み用


6軸,9軸センサー用の構造体

構造体設定 説明
struct AhrsValue {
Adafruit_BNO055 bno
= Adafruit_BNO055(55, 0x28, &Wire);
MPU6050 mpu6050;
uint8_t mpuIntStatus;
uint8_t devStatus;
uint16_t packetSize;
uint8_t fifoBuffer[64];
Quaternion q;
VectorFloat gravity;
float ypr[3];
float yaw_origin = 0;
float yaw_source = 0;
float read[16];
float zeros[16] = {0};
float ave_data[16];
float result[16];
float stock_data[IMUAHRS_STOCK][16];
int stock_count = 0;
VectorInt16 aa;
VectorInt16 gyro;
VectorInt16 mag;
long temperature;
};

bno: BNO055のインスタンス

MPU6050のインスタンス
MPUからの実際の割り込みステータスバイト
各デバイス操作後のステータス (0 = 成功, !0 = エラー)
DMPパケットサイズ (デフォルトは42バイト)
FIFOストレージバッファ
クォータニオン [w, x, y, z]
重力ベクトル [x, y, z]
DMPロール, ピッチ, ヨー [x, y, z]
ヨー軸のセンター補正値
ヨー軸の元データ
センサ値の読み込み配列
センサ値のゼロリセット用配列
移動平均値計算用(データ格納)
加工後の最新のmpuデータ(二次データ)
移動平均値計算用のデータストック
移動平均値計算用
加速度センサの測定値[x, y, z]
角速度センサの測定値[x, y, z]
磁力センサの測定値[x, y, z]
温度測定値
インスタンス名
ahrs


シリアルモニタリング設定用の構造体

構造体設定 説明
struct MrdMonitor {
bool frame_delay = MONITOR_FRAME_DELAY;
bool flow = MONITOR_FLOW;
bool all_err = MONITOR_ERR_ALL;
bool servo_err = MONITOR_ERR_SERVO;
bool seq_num = MONITOR_SEQ;
bool pad = MONITOR_PAD;
};

フレーム遅延時間を表示
フローを表示
全経路の受信エラー率を表示
サーボエラーを表示
シーケンス番号チェックを表示
リモコンのデータを表示
インスタンス名
monitor


システム用

変数名 説明
uint8_t *s_spi_meridim_dma DMA送信用
uint8_t *r_spi_meridim_dma DMA受信用
TaskHandle_t thp[4] マルチスレッドのタスクハンドル格納用


サーボパラメータ用の構造体

構造体設定 説明
struct ServoParam {
int num_max;
int ixl_mount[IXL_MAX];
int ixr_mount[IXR_MAX];
int ixc_mount[IXC_MAX];
int ixl_id[IXL_MAX];
int ixr_id[IXR_MAX];
int ixc_id[IXC_MAX];
int ixl_cw[IXL_MAX];
int ixr_cw[IXR_MAX];
int ixc_cw[IXC_MAX];
float ixl_trim[IXL_MAX];
float ixr_trim[IXR_MAX];
float ixc_trim[IXC_MAX];
float ixl_tgt[IXL_MAX] = {0};
float ixr_tgt[IXR_MAX] = {0};
float ixc_tgt[IXC_MAX] = {0};
float ixl_tgt_past[IXL_MAX] = {0};
float ixr_tgt_past[IXR_MAX] = {0};
float ixc_tgt_past[IXC_MAX] = {0};
int ixl_err[IXL_MAX] = {0};
int ixr_err[IXR_MAX] = {0};
int ixc_err[IXC_MAX] = {0};
iuint16_t ixl_stat[IXL_MAX] = {0};
uint16_t ixr_stat[IXR_MAX] = {0};
uint16_t ixc_stat[IXC_MAX] = {0};
};
ServoParam sv;

サーボの最大接続 (サーボ送受信のループ処理数)
L系統のマウントありなし
R系統のマウントありなし
C系統のマウントありなし
L系統の実サーボ呼び出しID番号
R系統の実サーボ呼び出しID番号
C系統の実サーボ呼び出しID番号
L系統の正逆方向補正
R系統の正逆方向補正
C系統の正逆方向補正
L系統の直立ポーズトリム値
R系統の直立ポーズトリム値
C系統の直立ポーズトリム値
L系統のポジション目標値(degree)
R系統のポジション目標値(degree)
C系統のポジション目標値(degree)
L系統のポジション前回値(degree)
R系統のポジション前回値(degree)
C系統のポジション前回値(degree)
L系統のサーボエラーカウンタ
R系統のサーボエラーカウンタ
C系統のサーボエラーカウンタ
L系統サーボのコンディションステータス配列
R系統サーボのコンディションステータス配列
C系統サーボのコンディションステータス配列
インスタンス名
sv