Android Bluetooth joystick

  1. In the Android app can you recognise when the app has been closed ‘illegally’ and act upon that action next time the app is opened. Might make it idiot proof.

Not sure to understand, please clarify "This allows Apps to be closed by swiping the minimized app icon off the screen"

Can the touch point be recognised without moving the yellow dot?

I understand your concern, makes sense, let me think about it...

  1. What do I need to change to alter the data fields fed back to the Android and can it be coded in “Your code here” areas in the Arduino sketch. I am doing number crunching on Arduino from Joystick positions and would like to send three values back to android.

To send back three values to Android (data_1, data_2,data_3,) just modify sendBlueToothData()

void sendBlueToothData()  {

    ......................
    ......................

    mySerial.print((char)0x2);                                                 // Start of Transmission
    mySerial.print(getButtonStatusString());      mySerial.print((char)0x1);   // buttons status feedback
    mySerial.print(data_1);                       mySerial.print((char)0x4);   // datafield #1
    mySerial.print(data_2);                       mySerial.print((char)0x5);   // datafield #2
    mySerial.print(data_3);                                                    // datafield #3
    mySerial.print((char)0x3);                                                 // End of Transmission
  }  
}

Hi, Thanks for information

The swipe-to-close feature is about 40 seconds into video at this site: http://blog.laptopmag.com/9-awesome-android-ice-cream-sandwich-tips

This method is what was causing problem about no data from Arduino to Android. I wonder if this happens with other users?

The swipe-to-close feature is about 40 seconds into video at this site:
http://blog.laptopmag.com/9-awesome-android-ice-cream-sandwich-tips
This method is what was causing problem about no data from Arduino to Android. I wonder if this happens with other users?

I can’t replicate the “swipe” problem both on Galaxy Tab3 tablet and Motorola G phone (V4.4.2)
Please let me have a step by step procedure

I am using a 7 inch tablet which doesn't have phone but allows multitasking. My Samsung GT-S5570 phone won't recognise the HC-05 so I can't test on mobile phone. However, the link below shows how to swipe on Galaxy 3. Hope this helps. I think all Android tablets have swipe-to-close so others may also have a problem. If you want I can video the actions. Just let me know

https://www.youtube.com/watch?v=I5wRaFSDIPo

(anyone know why my Samsung GT-S5570 phone won't recognise the HC-05)

@ Bob1943

  1. When you first touch the yellow joystick dot, it immediately moves to the centre of the touch point. This changes the xy numbers – most noticeable when you touch the edge. (I want to control two servos but don’t want them to move until the joystick is moved intentionally). Can the touch point be recognised without moving the yellow dot?

I understand your concern, makes sense, let me think about it...

I addressed the situation ;) Please let me have your email via PM, I will send you V4.1 for testing

I addressed the situation ;) Please let me have your email via PM, I will send you V4.1 for testing

Check your mail ...

Hi Kas, This version V4.1 works fine. Wherever you touch on the yellow spot is returned as coordinate 0,0 (x,y) which is exactly what I was looking for. No jumpy servos anymore. - Many thanks

A couple of comments on Joystick BT Commander.

  1. As information can be sent from Arduino to Android, is it possible to use the Android like a Serial monitor to display this information with rolling values - just like the USB to computer screen. You could give the option to change from Joystick to Monitor to make space on the Android screen. An option to rotate the Android to make a deeper window would help, and an added bonus would be to have a button to pause the display if required.

  2. Can the Arduino Bluetooth code be put into a library so the bluetooth device can be connected and used as a monitoring/commander tool. This would make the Arduino coding for the main applications more visible.

Just a thought!!!

This version V4.1 works fine. Wherever you touch on the yellow spot is returned as coordinate 0,0 (x,y) which is exactly what I was looking for. No jumpy servos anymore. - Many thanks

Thanks, I will include this feature in V5.0 (pure ASCII protocol)

  1. As information can be sent from Arduino to Android, is it possible to use the Android like a Serial monitor to display this information with rolling values - just like the USB to computer screen. You could give the option to change from Joystick to Monitor to make space on the Android screen.

Android Bluetooth joystick is a small footprint App (78Ko), its only task is to emulate a joystick ;) There are very good App for serial monitoring, BlueTerm is one of those

My Samsung GT-S5570 phone won't recognise the HC-05 so I can't test on mobile phone

Try sending AT command

AT+CLASS=1

Should work

@Topicja

Hi Kas I really like your excellent android app but after last update i cannot get it to work. I tried to rewrite my program but i don't receive any data. Could you please send me apk file of older version? Version 3.1 was working well for me. My e-mail address is xxxxxxxx@xxx.com

Thank you for your response and your willingness

I could recompile V3.1, but it makes much more sense to have your own program fixed and working Joystick transmission has not been modified and should work, does it?? Please let me have your original Arduino sketch, I will fix it for you

@all Should you encounter same difficulties, please contact me via PM

Sorry for late response. My problem was in bautrate and also you must press 3.rd button to get work … so yust overwrite setbuttonfeedback=false to setbuttonfeedback=true and it work for my.

@Topicja

I could recompile V3.1, but it makes much more sense to have your own program fixed and working Joystick transmission has not been modified and should work, does it?? Please let me have your original Arduino sketch, I will fix it for you

I will send you the modified sketch tomorrow evening There are too many transmission errors at 9600 bps Please, in the meantime, configure your BT card at 57600 bps

Are you able to do it by yourself ?? Otherwise, let me have a link to your specific model

For those who still have a Bluetooth card configured @9600bps, please add a one millisecond delay after the second "while(mySerial.available())"

void loop() {
  if(mySerial.available())  { 
    delay(2);
    cmd[0] =  mySerial.read();  
    if(cmd[0] == STX)  {
      i=1;      
      while(mySerial.available())  {
      delay(1);                     //  <

This will prevent while(mySerial.available()) to return before the complete data frame is received I have modified AndroTest V1.4 to reflect this modification (now Version 1.41)

I only work @57600bps and never bothered checking lower data speeds :blush: Thanks Topicja for bringing this point to my attention

A sweet thought for the Microsoft developers who deal with thousands different hardware configurations and get bashed by users because... "it doesn't work on MY specific setup" ;)

@n3kx

My problem was in bautrate

Glad it finally works :)

and also you must press 3.rd button to get work .... so you overwrite setbuttonfeedback=false to setbuttonfeedback=true and it work for my

:roll_eyes: :roll_eyes: :roll_eyes: setButtonFeedback was created for handling push buttons This is a flag to send an earlier feed back to Android, for a consistent visual effect setButtonFeedback is reset to False with each sendBlueToothData() call:

  if(setButtonFeedback == true)  {                      // allow momentary button visual effect
    previousMillis = currentMillis + 250;   
    setButtonFeedback = false;
  }

This code snippet could be safely omitted (will be removed in next release):

setButtonFeedback is misplaced and should be moved from Button #3 to Button #5 (push button) I edited accordingly AndroTest V1.4 in response #212

Please show me the way to check and configure my bluetooth card
thanks, Christian

Bluetooth cards come in a many flavors HC-05, HC-06, HC-07, HC-08 …

I personally own an HC-06

and a very convenient Arduino/HC-05 combo

Configuration methods are quite different according to board type

For 57600 bps setup:

HC-05:        AT+UART=57600,0,0\r\n        (with linefeed + return)
HC-06:        AT+BAUD7                     (w/o linefeed + return)

The all point is to access the board configuration mode
My HC-05 board has a built in switch + reset button for easy operation (see above)

Arduino member Nick_Pyner has produced a very interesting document, I learned a lot from it
Don’t forget to increase Nick’s Karma by hitting the green “+” sign below his name

Complete AT command set:
HC-05
HC-06

Further readings here

Finally, I attach two sketches for configuring HC-05 and HC-06 boards

Enjoy the fascinating Bluetooth universe :wink:

@all
Feel free to post your personal experience and additional links

BT_Config_HC_05.ino (3.96 KB)

BT_Config_HC_06.ino (3.3 KB)

Hello Kas,

First I would like to say thank you for the great piece of software you have written. It has made implementing this type of controls into my project SO much easier.

I do have one question for you, but it would probably be better to give you a little background first...

I'm currently developing an autonomous mobile robot platform, with the UI to control it on an Android tablet. I've developed most of the UI already for my device, and included a button that opens your Joystick BT Commander app directly from within my UI, for when the end user needs to manually control the robot.

However the Joystick BT Commnader app looks nothing like my UI design/theme, most notably you have a dark theme while my UI uses a "light" theme with a white background.

So my question for you is are you planning on implementing any sort of customization in this area into your app in the near future at all? If not, is there some way that I can change the colors so our software would better compliment eachother? I know I can go back and redesign my UI to match your app, but for my particular application (outdoors and/or in direct sunlight) a dark theme is a lot harder for the end user to see.

Thanks in advance for any assistance you can provide. It is greatly appreciated.

Hi joepro Thanks for the comments Should be included in V5.0, to be posted within 4 weeks

Hi Kas, Thanks for the great App!

Im having some difficulties implementing the code into my already excising code based on Miguel Grinberg tutorial (link below) http://blog.miguelgrinberg.com/post/building-an-arduino-robot-part-iv-a-not-so-basic-robot-firmware I was wondering if you are able to help me. If so, I can email you the code and explain more about the problem I got. Obviously if we get it to work, we share it here for everyone else to use.

I was wondering if you are able to help me. If so, I can email you the code and explain more about the problem I got. Obviously if we get it to work, we share it here for everyone else to use

Hi jaapdemaat, Let me have your email address via PM

Hi Kas,
I don’t know if you have this info…I just installed Joystick BT Plus onto Kindle Fire HD 7" and it appears to be working from first impression :smiley:
Bear in mind that I have not had a chance to test with the Arduino sketch, and sadly may not for some time, but look forward to doing so.
I just thought you may be glad to know this, I don’t remember anyone else commenting on trying the app on Kindle.

From the screenshot, the buttons toggle green to white when pressed and the joystick data field in () changes with movement of the joystick, leading me to think the app is working correctly on the device. The joystick is a bit far to the right and may interfere with the menu there, I am not sure yet.

Cheers, and thanks again for all the work you have done!

Hi billcat :)

Thanks for the info I did know that Fire OS is based on Android, but I wasn't too sure it would work

The joystick is a bit far to the right and may interfere with the menu there, I am not sure yet

I can easily compile a "billcat's special" with fully visible joystick Let me know ;)