2017-07-07 30 views
0

私はスマートフォンとarduinoを使っておもちゃの車を制御するアプリを作っています。私はBluetoothとモジュールに接続し、LEDライトでテストしても問題ありません。私が唯一の懸念を持っている、おそらく私は、車は、このコードのように、タッチ法上から前方に移動する(ただし、これはLEDライトのためである) ontouchは何もしませんAction_upで何もしない

LED_On.setOnTouchListener(new View.OnTouchListener(){ 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       LEDOn(); 
       return true; 
      } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       LEDOff(); 
       return false; 
      } 
      return false; 
     } 
    }); 

が今私の問題は、私は方法やテクニックをしたいということですタッチスクリーンから手を離したときにアプリを何もしないようにするために、私はそれぞれのAction_DownとAction_UPのために別々のメソッドを作っているので、毎回別の文字をarduinoに送り、おもちゃの車、と私は便利ではない手紙のトンを持っているので、そうすることによって。

public void LEDOn(){ 
    // turn LED On 
    if (btSocket!=null) 
    { 
     try 
     { 
      btSocket.getOutputStream().write("F".toString().getBytes()); 
     } 
     catch (IOException e) 
     { 
      msg("Error"); 
     } 
    } 
} 

また、誰かがマルチタッチが正確にどのように動作するかを説明できる場合は、非常に感謝しています。

+1

文字は何ですか? – Dziugas

+0

私が望むボタンをクリックするとarduinoのコマンドをブルートゥースでarduinoに送ります。たとえば、フォワードボタンをクリックすると「F」が送信され、arduinoコードがそれを受信して​​モーターを始動させ、車は前方に移動します。私がしたいのは、私がタッチスクリーンから手を離したときに、私のアプリが「f」のような別の文字を送信して車が前進するのを止めるのではなく、メソッドで信号 'F'を送信しないことです。 –

答えて

0

Rcコントローラを作成して同じ問題に直面している人なら、それを修正する私のアプローチでした。

私はアクションボタンを押しているときはいつでもz文字を送信するためにこのコードを使いました。例えば、私はフォワードボタンに触れてからリリースしました。

if(btSocket!=null){ 
     try 
     { 
      btSocket.getOutputStream().write("z".toString().getBytes()); 
     } 
     catch (IOException e) 
     { 
      msg("Error"); 
     } 
    } 

これは私の後ろのonTouchのための方法です。

downView.setOnTouchListener(new View.OnTouchListener(){ 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN){ 
       downOn(); 
       return true; 
      } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       directionsOff(); 
       return true; 
      } 
      return false; 
     } 
    }); 

これは、これは私が使用Arduinoのコードである文字D

public void downOn(){ 
    // starts moving backwards 
    if(btSocket!=null){ 
     try 
     { 
      btSocket.getOutputStream().write("D".toString().getBytes()); 
     } 
     catch (IOException e) 
     { 
      msg("Error"); 
     } 
    } 
} 

を送信する方法であり、Iは、LEDでテストしました。

if (state == 'D') { 
    digitalWrite(LED, HIGH); 
}else if (state == 'F') { 
    digitalWrite(LED2, HIGH); 
}else{ 
    digitalWrite(LED, LOW); 
    digitalWrite(LED2, LOW); 
} 

私は十分に明確にしたいと思う。

関連する問題