arduinoにブルートゥース経由でPS3の入力を吊るすを削除する

I am working on a remote controlled vehicle based project. I am using a PS3 bluetooth controller for this purpose & am facing the problem described below. Any help would be appreciated.

Basically, the motors are connected to the MEGA which is connected to a USB Host Shield. A bluetooth dongle is connected to the shield. This dongle & shield enable MEGA to communicate with PS3 wirelessly. I am using the USB Host 2.0 library available for Arduino on GitHub.

私のコードは、PS3から入力を取るように次のとおりです:

USB.Task();
if ( PS3.PS3Connected || PS3.PS3NavigationConnected )
{
    if ( PS3.getAnalogButton(UP) )
        Serial.println("UP");
    if ( PS3.getAnalogButton(DOWN) )
        Serial.println("DOWN");
    if ( PS3.getAnalogButton(LEFT) )
        Serial.println("LEFT");
    if ( PS3.getAnalogButton(RIGHT) )
        Serial.println("RIGHT");
}

This is the code inside loop(). If anyone is wondering why getAnalogButton is used instead of getButtonClick, the reason is to enable the vehicle to move ahead as long as UP is pressed & so on. This was an improvisation on our part.

As can be seen, the function prints UP, DOWN, LEFT or RIGHT as long as they are pressed continuously. The problem is that it works perfect for a while. But then, it enters an infinite loop & stops taking input from the PS3.

基本的に、入力は次のようになります

UP
UP
UP
UP
UP
UP
UP
.....
LEFT
LEFT
LEFT
// At this point it hangs without printing any further inputs.

Can someone help tackle this problem? It is essential for us to move the vehicle as long as the buttons are pressed & stop when button is released. Unfortunately, there is no feature to detect PRESSED or RELEASED state for PS3. Any help would mean a lot.

Also, we initially thought that the hang was because of overflowing the serial input. So, we removed all Serial messages & tested with LEDs. But, the same problem is still faced.

0
追加された 編集された
ビュー: 4
ru de
質問に答えるには他にどんな詳細がありますか? @ frarugi87私に教えてください。私はすぐにそれらを提供します。
追加された 著者 TGuimond,
同じことがあなたにもあてはまる@computercarguy
追加された 著者 TGuimond,
それは一定の時間の後にランダムにハングアップします。接続がリセットされない限り、それ以上の入力は受信されません。ただし、ハングアップしても接続は損なわれていないようです。
追加された 著者 TGuimond,
私はハングアップの理由を理解することができません。参考までに、私はUSBホスト2.0ライブラリのPS3BTライブラリの例を使用していますが、そのライブラリは上記のGitHubリンクです。私はこの目的のために他の図書館のavailbaleがあるとは思わない。私はarduinoの初心者です。あなたがハングアップの理由を知る手助けをすることができれば、より良い理解のための完全なコードを表示します。 @ frarugi87
追加された 著者 TGuimond,
それを行い、会話に戻りましょう...あなたの時間@ frarugi87に感謝します。
追加された 著者 TGuimond,
それがそうであれば、それが掛かっている場所を把握する必要があります.BT接続が落ちて、あなたの投稿されたコードが一見何もしないようになる可能性があります。
追加された 著者 rossp,
どのようにシリアルデータを読み込んでいるかによって、バッファがいっぱいになってパージされないことがあります。私は最近のプロジェクトでSoftwareSerialを使用しているときにこれを持っていました。コードは便利ではなく、私のGoogle-fuは同じ解決策を見つけるのに失敗していますが、私は各ループにSoftwareSerialバッファ変数を "再宣言"しなければなりませんでした。私は今夜​​仕事をした後でこれを見ることを覚えています。なぜなら、私が言ったことがはっきりしていないことを知っているからです。
追加された 著者 Vishvesh,
私はあなたが得ることができる最も正確な答えは "何かがあなたのループをブロックしている"と思う。より多くのヘルプが必要な場合は、より多くの情報を共有する必要があります。たとえば、あなたのプログラムにはほかに何がありますか?どのライブラリを使用していますか?機能がすべてをブロックしていることを理解できますか(つまり、USB.taskがハングしたり、チェックが失敗していますか?)さらに、タイトルとテキストは異なっています。実際にラグを経験しているのですか、それともハングしますか?
追加された 著者 Tom Collins,
@SamagraSinghTomarは私の前のコメントから引用しています。例えば、あなたのプログラムには他に何がありますか?どのライブラリを使っていますか?あなたは何が関数を妨害しているのか分かりますか?(つまり、USB.taskがハングしたり、 ?)? "
追加された 著者 Tom Collins,
@SamagraSinghTomar USB.taskコールの後にprintlnを追加し、ifの内側に別のprintlnを追加しようとします。完全にハングアップすると、他の印刷が中止されます。 USB接続が切断されてもタスクが終了すると、ループ停止印刷の中にprintlnが表示されます。いずれにしても、別のBTアダプタを試してみてください(私は作者が特定のBTドングルを推奨しているかどうかはわかりません)
追加された 著者 Tom Collins,

答えはありません

0