コード
コード Arduino
/ * * =============================================================* MobBob制御プログラム-ソフトウェアシリアルBluetoothバージョン* Kevin Chan(別名Cevinius)* =============================================================**このプログラムシリアルコマンドを使用してMobBobを制御できるようにします。このバージョンのコードでは、*コマンドはソフトウェアのシリアルポートを介して受信され、ピンは上部近くの#defineで定義されています。 *これは、Arduino互換ボードを使用して、Bluetoothカードをソフトウェアシリアル用に設定されたピンに接続できることを意味します。 (DFRobotのBlunoボード用に設計された他のバージョンとは対照的です。)* *このプログラムは長く、スムーズなサーボアニメーションプログラムとシリアル*コマンドパーサープログラムの2つの主要コンポーネントが含まれています。 **アニメーションシステム* ================*アニメーションプログラムは、サーボキーフレームアレイをスムーズにアニメーション化するように設計されています。コードは、使いやすいように*最善を尽くそうとします。 **アニメーションシステムは1つのコマンドのみをキューに入れます。つまり、1つのコマンドを実行でき、* 1つのコマンドをキューに入れることができます。さらにコマンドを送信すると、キューに入れられたコマンドが上書きされます。 * *アニメーションシステムは、デフォルトで現在のアニメーションの終了を待ってから次のアニメーションを開始します。これは、アニメーションデータがロボットをベースポーズにして終了すると、スムーズに結合することを意味します。これをサポートするために、アニメーションシステムには、アニメーションに「終了シーケンス」を設定して、ロボットをベースポーズに戻す機能もあります。この機能は、ウォークフォワード/バックワードアニメーションに使用されます。 *これらのアニメーションには、ロボットをベースポーズに戻す最終シーケンスがあります。 * *アニメーションの再生が終了すると、アニメーションシステムはシリアルポートに応答文字列を出力します。 *これにより、発信者は、要求したアニメーションの再生がいつ終了したかを知ることができます。これは、*ユーザーがアニメーションをシーケンスするのに便利です。アニメーションが終了するのを待ってから、別のアニメーションを開始します。 * *アニメーションコードには、物事を微調整できるようにするための多くの変数があります。例えば。更新頻度、arduinoピンなど。**アニメーションデータ配列形式も手作業で簡単に編集できるように設計されています。 **コマンドパーサー* ==============*このシステムは、シリアル経由で受信したコマンドを解析し、処理します。コマンドには、サーボ位置を直接設定するためのコマンドと、事前定義されたアニメーションおよびウォークをトリガーするためのコマンドが含まれます。 * *したがって、歩行の詳細を気にしたくないユーザーは、事前定義された歩行/アニメーションを使用できます。 *また、サーボを完全に制御したい(その場で新しいアニメーションを作成したい)ユーザーもそれを行うことができます。 * *上記のように、これらのコマンドはArduinoシリアルモニターからインタラクティブに使用できます。 * Bluetooth LEを使用して送信することもできます(Blunoを使用している場合)。電話アプリは、BluetoothLEを介して* Blunoにコマンドを送信します。 * *一般的なコマンド:* ----------------- *準備完了/ OKチェック: *ステータスチェック。コントローラが機能しているかどうかを確認するために、応答がすぐに返されます。 * *サーボの設定: * time-指定された角度にトゥイーンする時間、0はすぐに角度にジャンプします* leftHip-中心からマイクロ秒。 -veはヒップイン、+ veはヒップアウト* leftFoot-フラットからマイクロ秒。 -veは足を下に、+ veは足を上に* rightHip-中心からマイクロ秒。 -veはヒップイン、+ veはヒップアウト* rightFoot-フラットからマイクロ秒。 -veはフットダウン、+ veはフットアップ*このコマンドは、サーボを完全に制御するために使用されます。 *現在のポーズから指定されたポーズまで、指定された期間にわたってロボットをトゥイーンできます。 * *停止/リセット: *現在のアニメーションの後にロボットを停止します。ループ*に設定されたアニメーションを無期限に停止するために使用できます。これは、ロボットを基本ポーズ(直立)にするためにも使用できます。* *即時停止: *現在のアニメーションが完了するのを待たずに、ロボットをすぐに停止します。これは*ロボットの現在のアニメーションを中断します。ロボットがアニメーションの途中*で不安定なポーズになる可能性があるため、これを使用するときは注意してください。 * *標準ウォークコマンド:* ----------------------- *転送:、-1は連続を意味し、0またはパラメータなしは1回と同じです。 *後方:、-1は連続を意味し、0またはパラメータなしは1回と同じです。 *左に曲がる:、-1は連続を意味し、0またはパラメータなしは1回と同じです。 *右折: