ローカル変数名のリスト
バージョン表示
型 | 変数名 | バージョン書式 | 説明 |
---|---|---|---|
#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 |