●( IOM )オムニ4輪 実装@【 改 修 】
●それなりの操作で、動かすことができましたが …
■オフ会での試運転時は …
・前日に、車体を動かすことができた状態で
中途半端な未完成状態での試運転でした。
●試運転では …
■直進軌道で走行する場合に、想定外の事象が発生
・車体方向が、少し右斜め方向を維持した状態で走行しました。
■帰宅後、自宅で車体を確認しましたら … 軸が抜けていました。
・軸止めネジが外れていましたので、大きな負荷が集中した感じです。
●動く模型らしい …
オムニホイールの特性を、活用したかったのですが
現状からのセッティングは、難しく感じましたので
動く模型的な操作で走行させる設定で【 改 修 】します。
・
・ ●動く模型的な軌道で走行する形態に改修します。
・
・ ― 車体の直進方向の位置決め ―
・
●( 前後 ・ 左右 ) 移動 ・ 旋回 などのアクション

→ オムニホイール特性 ( 斜め・平行 ) 移動機能を取り除いています。
●(前進・後進・左方向・右方向)軌道のホイール位置と回転方向

●車体の直進方向位置の見直しに伴う … GPIOピンの出力パターンです。
クリックすれば、拡大します。
・
・ ●走行形態の変更に伴う … 操作ボタン用途の改修です。
・
・ ― 動く模型的な、ホイール回転バターンの適用 ―
・
●スマホ操作画面の用途です。

//********************************************************
//【Taka袋(IOM)ネット】●オムニ4輪【A】実装@プログラム
// ESPマイコン(ESP32): ESP32-OMNI4-IOM-A-05
//-------------------------------------------------------
//ホイール回転パターンBを適用する。
//-------------------------------------------------------
//■ゲームPADは … Aタイプ(PS2・PS3)が使える。
//【IOM】指定の場合…【LINE通知】あり
//********************************************************
●動作確認
・動く模型らしい … 走行になりました。
●更に、
・微妙な旋回ができれば、操作性が良くなりますので …
●新たな、旋回設定を試してみます。
・信地旋回時の設定をベースにして、【旋回】機能を追加します。
・内外輪差で旋回進行方向の角度を浅くして微旋回させます。
//********************************************************
//【Taka袋(IOM)ネット】●オムニ4輪【A】実装@プログラム
// ESPマイコン(ESP32): ESP32-OMNI4-IOM-A-06
//-------------------------------------------------------
//ホイール回転パターンCを適用する。
//-------------------------------------------------------
//■ゲームPADは … Aタイプ(PS2・PS3)が使える。
//【IOM】指定の場合…【LINE通知】あり
//********************************************************
●( 前後 ・ 左右 ) 移動 ・ 旋回 などのアクション

●(前進・後進・左方向・右方向)軌道のホイール位置と回転方向

●スマホ操作画面の用途です。

●車体の直進方向位置の見直しに伴う … GPIOピンの出力パターンです。
・
・
・ ●戦車のDMD駆動制御プログラムと同様な考え方で …
・
・ ・旋回時の内輪回転数を減らします。
●こんな感じで…対応します。
//********************************************************
// ●ポート出力 C【前進】(左)旋回
//********************************************************
void V_GPIO_PUT_04() {
// 内輪調整
NCYO_PUT_04(); // ●(内輪調整)ポート出力 C
// 正転 ●
digitalWrite (V_GPIO_3P, LOW ); // 仮想GPIOBP ← LOW
digitalWrite (V_GPIO_4K, HIGH); // 仮想GPIOCK ← HIGH
// 逆転 ◆
digitalWrite (V_GPIO_5P, HIGH); // 仮想GPIODP ← HIGH
digitalWrite (V_GPIO_6K, LOW ); // 仮想GPIOEK ← LOW
// 正転 ●
digitalWrite (V_GPIO_7P, LOW ); // 仮想GPIOFP ← LOW
digitalWrite (V_GPIO_8K, HIGH); // 仮想GPIOGK ← HIGH
}
//********************************************************
// ●(内輪調整)ポート出力 C
//********************************************************
void NCYO_PUT_04() {
if(NCYO_CNT > NCYO_SK) { // 内輪閾値(NCYO_SK)を超えた時
//**停止設定する**--------------------------------------
// 空転 〇
digitalWrite (V_GPIO_1P, LOW ); // 仮想GPIO@P ← LOW
digitalWrite (V_GPIO_2K, LOW ); // 仮想GPIOAK ← LOW
NCYO_CNT = 0; // 内輪調整カウント ← 0
} else { // 内輪調整カウント 0 以下の時
//**回点設定する**--------------------------------------
// 正転 ●
digitalWrite (V_GPIO_1P, LOW ); // 仮想GPIO@P ← LOW
digitalWrite (V_GPIO_2K, HIGH); // 仮想GPIOAK ← HIGH
NCYO_CNT = NCYO_CNT + 1; // 内輪調整カウントを 1 UPする。
}
}
●動作確認
・微妙な旋回ができました。
・
・
・ ●パラメータ入力方式の変更
・
・
●DIPスイッチで、パラメータ入力を試験的に考察していましたが
回路内の配線を、スッキリさせてみたいので …
スマホ画面などからのボタン入力方式に切替えることにしました。
現状のスイッチ設定機能は … そのまま流用します。
・パラメータは、EEPROM領域に書込んで保存します。
・起動時に、EEPROM領域からパラメータを読込んで使用します。
・不揮発性のROM(EEPROM)に書込んだパラメータは …
電源を切っても記憶されています。
・電子回路などの配線も除きますので、スッキリします。
■EEPROM(パラメータ設定)ツール
//********************************************************
//●【ESP32】EEPROM(パラメータ設定)ツール
//・EEPROM・値設定(書込み) … 各データ(4バイト)書込み X 4個
//--------------------------------------------------------
// ESP32マイコン(Arduino): ESP32-EEPROM-PUT-01
//********************************************************
//********************************************************
//●【ESP32】EEPROM(パラメータ設定)ツール
//・EEPROM・値表示(読込み) … 各データ(先頭1バイト)読込み X 4個
//--------------------------------------------------------
// ESP32マイコン(Arduino): ESP32-EEPROM-GET-01
//********************************************************
●EEPROMに、書き込みができました。… 4件( 1 2 3 4 )

・データ件数 : 4件 ( SEQ : 0・1・2・3 )
・1項目 : 4バイト( int 32bit )
・全体 : 4バイト X 4件 = 16バイト
●DIPスイッチの設定

・
・ ●EEPROM領域を構造体で使用してみます。
・
・ ・構造体タグ名(EEP_DATA)
・
//********************************************************
//【Taka袋(IOM)ネット】●オムニ4輪【A】実装@プログラム
// ESPマイコン(ESP32): ESP32-OMNI4-IOM-A-09
//********************************************************
//●【EEPROM】と【DIPスイッチ】入力からパラメータ設定する。
// ■EEPROM入力系
// ・DIP@ … 画面パネルNO
// ・DIPA … 接続形態NO
// ・DIPB … PSコントローラNO
// ■【物理】DIPスイッチ入力系
// ・DIPC … 入力タイプ
//-------------------------------------------------------
■EEPROM(パラメータ設定)ツール
//********************************************************
//●【ESP32】EEPROM テストA プログラム EEPROM出力
// ESP32マイコン(Arduino): ESP32-EEPROM-PUT-02
//********************************************************
//********************************************************
//●【ESP32】EEPROM テストA プログラム EEPROM 読み出し
// ESP32マイコン(Arduino): ESP32-EEPROM-GET-02
//********************************************************
・
・
・ ●リセット機能を組み込む。
・
・
●ソフトウェアリセット … ESP.restart();
プログラムでリセット処理して、リスタート(再起動)する。
//********************************************************
//【Taka袋(IOM)ネット】●オムニ4輪【A】実装@プログラム
// ESPマイコン(ESP32): ESP32-OMNI4-IOM-A-06
//-------------------------------------------------------
//・ホイール回転パターンCを適用する。
//・DIPスイッチをEEPROMでパラメータ設定する。
//-------------------------------------------------------
・
・
・
・
・