Quantcast
Channel: Android Mode - Processing 2.x and 3.x Forum
Viewing all articles
Browse latest Browse all 941

Output slider values from Android (using Controlp5 and Ketai libraries) to Arduino

$
0
0

Hello,

I am trying to output values from a slider in Android Mode (using the Controlp5 and Ketai libraries) to an Arduino. I am posting my working code (built from some example codes I found online) here for reference. The original code used simple on/off buttons to send characters to the Arduino. I am a newbie, so from building this example I taught myself some basics of how to send characters from the Android over Bluetooth.

Now I would like to send a range of values corresponding to a couple of sliders. I have been able to successfully create the sliders in my code, but I am really struggling to understand how to get these values to output to an Arduino like I did for each button.

I have since gone through and commented out all of the old, unnecessary lines corresponding to the buttons, but I was hoping to use them for reference/modify them to output the slider values.

Any help at all would be greatly appreciated. Thank you.

// reference for basic button control code:  http://stormkitz.blogspot.com/
// references for adding sliders:  http://wiki.bk.tudelft.nl/toi-pedia/Processing_Buttons_and_Sliders
//                                  https://www.kasperkamperman.com/blog/processing-code/controlp5-library-example1/
//                                  http://coretechrobotics.blogspot.com/2013/12/controlling-arduino-with-android-device.html
//                                  http://forum.arduino.cc/index.php?topic=194265.0
//                                  http://forum.arduino.cc/index.php?topic=193316.0

import android.content.Intent;
import android.os.Bundle;
import ketai.net.bluetooth.*;
import ketai.ui.*;
import ketai.net.*;
import controlP5.*;                                                  //KZ: slider
import cc.arduino.*;                                                  //KZ: slider

PFont fontMy;                                                        //declaring font
boolean bReleased = true;                                           //no permament sending when finger lets off the button
KetaiBluetooth bt;                                                  // Create object from BtSerial class
boolean isConfiguring = true;
String info = "";
KetaiList klist;
ArrayList devicesDiscovered = new ArrayList();                     //store in array the discovered device
boolean rectOver = false;
int rec = 0;

ControlP5 controlP5;                                                //KZ: slider
Arduino arduino;                                                     //KZ: slider

int DC_speed = 0; // 0-6                                         //KZ: slider
int DC2_speed = 0; // 0-6                                        //KZ: slider
int DC3_speed = 0; // 0-6                                          //KZ: slider

// The following code is required to enable bluetooth at startup.
void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
bt = new KetaiBluetooth(this);                                    //create the BtSerial object that will handle the connection
}

void onActivityResult(int requestCode, int resultCode, Intent data)
 {
bt.onActivityResult(requestCode, resultCode, data);                 //to show the discovered device
}

void **setup**()
{
size(displayWidth, displayHeight);                                 //size of the phone screen
smooth();
frameRate(10);                                                    //the frame rate of my screen
orientation(PORTRAIT);                                            //vertical
bt.start();                                                       //start listening for BT connections
isConfiguring = true;                                             //at my phone start select device…
fontMy = createFont("SansSerif", 30);                             //font size
textFont(fontMy);

controlP5 = new ControlP5(this);
 controlP5.addSlider("DC_speed",0,6,DC_speed,100,200,50,500);     //KZ: slider
 controlP5.addSlider("DC2_speed",0,6,DC2_speed,330,200,50,500);    //KZ: slider
 controlP5.addSlider("DC3_speed",0,6,DC3_speed,550,200,50,500);    //KZ: slider
}

void **draw**()
{
//at app start select device
if (isConfiguring)

{
ArrayList names;

//create the BtSerial object that will handle the connection
//with the list of paired devices
klist = new KetaiList(this, bt.getPairedDeviceNames());

isConfiguring = false;                                             //stop selecting device
}

//else
//{
//color a = color(255,0,0);                                          //KZ: red- main axis
//color b = color(255,0,0);                                          //KZ: red- main axis
//color d = color(255,0,0);                                          //KZ: red- main axis
//color i = color(95, 191, 187);                                     //KZ: aqua- background of dots???

//update(mouseX, mouseY);                                             //update our finger point at where of the screen
//background(95, 191, 187);                                            //background color

//if
//((mousePressed)&&(rectOver)&&(rec==2))  
//{       d = color(10,237,26);                                       //KZ: changes d from red to green
//}
//else if ((mousePressed)&&(rectOver)&&(rec==3))
//{       a = color(10,237,26);                                       //KZ: changes a from red to green
//}
//else if ((mousePressed)&&(rectOver)&&(rec==4))
//{       b = color(10,237,26);                                       //KZ: changes a from red to green
//}

  // if ((rec == 2) && (rectOver)&&(mousePressed) && (bReleased == true)) {            // If our finger is on the square,
   // byte[] data = {'w'};                                                             // send w to arduino when we click the button 2
   // bt.broadcast(data);                                                              //send with bt
    //bReleased = false;                                                               // send data for once until next time we click the button again
 // }
 // if ((rec == 3) && (rectOver)&&(mousePressed) && (bReleased == true)) {
 //   byte[] data = {'a'};                                                             // send a to arduino when we click the button 3
 //   bt.broadcast(data);                                                              //send with bt
 //   bReleased = false;
 // }
 // if ((rec == 4) && (rectOver)&&(mousePressed) && (bReleased == true)) {
 //   byte[] data = {'d'};                                                             // send d to arduino when we click the button 4
 //   bt.broadcast(data);                                                              //send with bt
 //   bReleased = false;
 // }
 // if((rectOver)&&(mousePressed == false)&& (bReleased == false)) {                   //when our finger move up from the button, send stop command to arduino
  //  byte[] data = {' '};
   // bt.broadcast(data);
   // bReleased = true;
  //}

  //fill(a);                                                                //fill each area of button with the color declared above
  //stroke(162); //the shape covered with a grey color line
  //triangle(350,600,450,550,350,500);                                      //draw the triangle with the coordinates   //KZ: FR
  //fill(b);
  //triangle(350,350,450,300,350,250);                                      //KZ: 2x. FL
  //fill(d);
  //triangle(150,250,50,300,150,350);                                      //KZ: 4x. BL
//}

//to print received data and show on screen
fill(255);
noStroke();
textAlign(LEFT);
text(info, 20, 104);
noFill();
}

//void update(int x, int y) {                                       //to control the flag when we click a button
// if ( overRect(350, 500, 100, 100) ) {                            //x, y, width, height
 //   rectOver = true;
  //  rec = 3;                                                      //Confirmed: Front Right
  //}
  //else if
  //( overRect(350, 250, 100, 100) ) {                              //x, y, width, height
  //  rectOver = true;
   // rec = 4;                                                      //Confirmed: Front Left
 // }
//  else if
 // ( overRect(50, 250, 100, 100) ) {                                //x, y, width, height
  //  rectOver = true;
  //      rec = 2;                                                  //Confirmed: Back Left
 // }
  //else
 // {
   // rectOver = false;                                             //nothing s touched on screen
  //}
//}
//boolean overRect(int x, int y, int width, int height)  {           //KZ: to scan what area is touched
//  if (mouseX >= x && mouseX <= x+width &&</span>
//      mouseY >= y && mouseY <= y+height)                           //to see if the mouse cursor inside rect</span>
  //{
 //   return true;
 // } else {
 //   return false;
 // }
//}

void onKetaiListSelection(KetaiList klist)
{
String selection = klist.getSelection();                                //select the device to connect
bt.connectToDeviceByName(selection);                                    //connect to the device
klist = null;                                                          //dispose of bluetooth list for now
}

//Call back method to manage data received
void onBluetoothDataEvent(String who, byte[] data)
{
if (isConfiguring)
return;
//received
info += new String(data);
if(info.length() > 150)                                               //clean the words on screen if string to long
info = "";
}//END of Android processing coding


Viewing all articles
Browse latest Browse all 941

Trending Articles