Stap 12: Main code...
Hier is de belangrijkste code... Ik kan een ZIP-bestand met het gehele project van Java op verzoek sturen... Stuur de aanvraag naar joebotics
MAIN CODE:
pakket ioio.examples.simple;
BALANS ACT 4 + MOGA 2
importeren van ioio.lib.api.PwmOutput;
importeren van ioio.lib.api.exception.ConnectionLostException;
importeren van ioio.lib.util.BaseIOIOLooper;
importeren van ioio.lib.util.IOIOLooper;
importeren van ioio.lib.util.android.IOIOActivity;
importeren van android.os.Bundle;
importeren van android.widget.TextView;
importeren van android.hardware.Sensor;
importeren van android.hardware.SensorEvent;
importeren van android.hardware.SensorEventListener;
importeren van android.hardware.SensorManager;
importeren van android.widget.SeekBar;
importeren van com.bda.controller.Controller;
importeren van com.bda.controller.ControllerListener;
importeren van com.bda.controller.KeyEvent;
importeren van com.bda.controller.MotionEvent;
importeren van com.bda.controller.StateEvent;
openbare klasse die ioiosimpleapp IOIOActivity breidt implementeert SensorEventListener {}
privé SensorManager mSensorManager;
privé Sensor mRotVectSensor;
privé float [] orientationVals = nieuwe float [3];
privé float [] mRotationMatrix = nieuwe float [16];
privé TextView textView_Current_Angle;
privé TextView textView_Tilt_adjuster;
privé TextView textView_kP_adjuster;
privé TextView textView_kI_adjuster;
privé TextView textView_kD_adjuster;
privé SeekBar seekBar_Tilt_adjuster;
privé SeekBar seekBar_kP_adjuster;
privé SeekBar seekBar_kI_adjuster;
privé SeekBar seekBar_kD_adjuster;
Controller mController = null;
definitieve ExampleControllerListener mListener = nieuwe ExampleControllerListener();
definitieve ExamplePlayer mPlayer = nieuwe ExamplePlayer (0.0f, 1.0f, 0.0f);
openbare nietige onCreate (bundel savedInstanceState) {}
mController = Controller.getInstance(this);
mController.init();
mController.setListener (mListener, null);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mRotVectSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
textView_Current_Angle = (TextView) findViewById(R.id.TextView_CurrentAngle_Value);
textView_Tilt_adjuster = (TextView) findViewById(R.id.TextView_Tilt_adjusterValue);
seekBar_Tilt_adjuster = (SeekBar) findViewById(R.id.SeekBar_Tilt_adjuster);
textView_kP_adjuster = (TextView) findViewById(R.id.TextView_kP_adjusterValue);
seekBar_kP_adjuster = (SeekBar) findViewById(R.id.SeekBar_kP_adjuster);
textView_kI_adjuster = (TextView) findViewById(R.id.TextView_kI_adjusterValue);
seekBar_kI_adjuster = (SeekBar) findViewById(R.id.SeekBar_kI_adjuster);
textView_kD_adjuster = (TextView) findViewById(R.id.TextView_kD_adjusterValue);
seekBar_kD_adjuster = (SeekBar) findViewById(R.id.SeekBar_kD_adjuster);
seekBar_Tilt_adjuster.setProgress(500);
seekBar_kP_adjuster.setProgress(0);
seekBar_kI_adjuster.setProgress(0);
seekBar_kD_adjuster.setProgress(0);
enableUi(false);
}
openbare klasse ExampleControllerListener implementeert ControllerListener {}
openbare nietige onKeyEvent (KeyEvent evenement) {}
schakelaar (event.getKeyCode()) {}
Case KeyEvent.KEYCODE_BUTTON_X:
seekBar_Tilt_adjuster.setProgress(seekBar_Tilt_adjuster.getProgress() - 2);
breken;
Case KeyEvent.KEYCODE_BUTTON_B:
seekBar_Tilt_adjuster.setProgress(seekBar_Tilt_adjuster.getProgress() + 2);
breken;
Case KeyEvent.KEYCODE_BUTTON_Y:
seekBar_kP_adjuster.setProgress(seekBar_kP_adjuster.getProgress() + 2);
breken;
Case KeyEvent.KEYCODE_BUTTON_A:
seekBar_kP_adjuster.setProgress(seekBar_kP_adjuster.getProgress() - 2);
breken;
Case KeyEvent.KEYCODE_DPAD_UP:
seekBar_kI_adjuster.setProgress(seekBar_kI_adjuster.getProgress() + 2);
breken;
Case KeyEvent.KEYCODE_DPAD_DOWN:
seekBar_kI_adjuster.setProgress(seekBar_kI_adjuster.getProgress() - 2);
breken;
Case KeyEvent.KEYCODE_DPAD_RIGHT:
seekBar_kD_adjuster.setProgress(seekBar_kD_adjuster.getProgress() + 2);
breken;
Case KeyEvent.KEYCODE_DPAD_LEFT:
seekBar_kD_adjuster.setProgress(seekBar_kD_adjuster.getProgress() - 2);
breken;
}
}
openbare nietige onMotionEvent (MotionEvent evenement) {}
mPlayer.mAxisX = event.getAxisValue(MotionEvent.AXIS_X);
mPlayer.mAxisY = event.getAxisValue(MotionEvent.AXIS_Y);
mPlayer.mAxisZ = event.getAxisValue(MotionEvent.AXIS_Z);
mPlayer.mAxisRZ = event.getAxisValue(MotionEvent.AXIS_RZ);
}
openbare nietige onStateEvent (StateEvent evenement) {}
schakelaar (event.getState()) {}
Case StateEvent.STATE_CONNECTION:
mPlayer.mConnection = event.getAction();
breken;
}
}
}
openbare klasse ExamplePlayer {}
statische definitieve float DEFAULT_SCALE = 4.0f;
statische definitieve float DEFAULT_X = 0.0f;
statische definitieve float DEFAULT_Y = 0.0f;
Boole gotPadVersion = false;
public int, mConnection = StateEvent.ACTION_DISCONNECTED;
public int mControllerVersion = StateEvent.STATE_UNKNOWN;
public int mButtonA = KeyEvent.ACTION_UP;
public int mButtonB = KeyEvent.ACTION_UP;
public int mButtonX = KeyEvent.ACTION_UP;
public int mButtonY = KeyEvent.ACTION_UP;
public int DpadUp = KeyEvent.ACTION_UP;
public int DpadDown = KeyEvent.ACTION_UP;
public int DpadLeft = KeyEvent.ACTION_UP;
public int DpadRight = KeyEvent.ACTION_UP;
openbare float mAxisX = 0.0f;
openbare float mAxisY = 0.0f;
openbare float mAxisZ = 0.0f;
openbare float mAxisRZ = 0.0f;
definitieve zweven heer;
definitieve float mG;
definitieve float mB;
zweven mScale = DEFAULT_SCALE;
zweven mX = DEFAULT_X;
float mijn = DEFAULT_Y;
openbare ExamplePlayer (drijven van r, g, zweven zweven b) {}
Mijnheer = r;
mG = g;
mB = b;
}
}
openbare klasse Looper breidt BaseIOIOLooper {}
privé PwmOutput LeftWheel;
privé PwmOutput RightWheel;
privé PwmOutput LeftArm;
privé PwmOutput RightArm;
private int currentAngle;
private int previousAngle;
private int P = 0;
private int I = 0;
private int D = 0;
private int PID = 0;
private int D_delta;
private int I_delta;
public int seekbar_tilt_adjuster_value = 500;
private int seekbar_kP_adjuster_value = 0;
private int seekbar_kI_adjuster_value = 0;
private int seekbar_kD_adjuster_value = 0;
public void setup gooit ConnectionLostException {}
LeftArm = ioio_.openPwmOutput (13, 50);
RightArm = ioio_.openPwmOutput (12, 50);
LeftWheel = ioio_.openPwmOutput (10, 100);
RightWheel = ioio_.openPwmOutput (11, 100);
enableUi(true);
}
public void loop gooit ConnectionLostException, {InterruptedException}
seekbar_tilt_adjuster_value = seekBar_Tilt_adjuster.getProgress() - 500;
seekbar_kP_adjuster_value = seekBar_kP_adjuster.getProgress();
seekbar_kI_adjuster_value = seekBar_kI_adjuster.getProgress();
seekbar_kD_adjuster_value = seekBar_kD_adjuster.getProgress();
currentAngle = (Math.round (orientationVals [1] * 100)) + seekbar_tilt_adjuster_value - Math.round(mPlayer.mAxisY*10) - Math.round(mPlayer.mAxisRZ*10);
currentAngle = (Math.round (orientationVals [1] * 100)) + seekbar_tilt_adjuster_value;
D_delta = currentAngle - previousAngle;
I_delta = I_delta + D_delta;
P = (seekbar_kP_adjuster_value * currentAngle) / 2000;
Ik = (seekbar_kI_adjuster_value * I_delta) / 4000;
D = (seekbar_kD_adjuster_value * D_delta) / 4000;
Als (ik <-100) {}
Ik =-100;
} else if (ik > 100) {}
Ik = 100;
// }
PID = P + I + D;
previousAngle = currentAngle;
RightArm.setPulseWidth (1590 - Math.round(mPlayer.mAxisY*900));
LeftArm.setPulseWidth (1540 + Math.round(mPlayer.mAxisRZ*900));
RightWheel.setPulseWidth (1500 + Math.round(mPlayer.mAxisY*35) + PID);
LeftWheel.setPulseWidth (1502 - Math.round(mPlayer.mAxisRZ*35) - PID);
LeftWheel.setPulseWidth (1502 - PID);
RightWheel.setPulseWidth(1500 + PID);
setText_current_angle(Integer.toString(currentAngle));
setText_tilt_adjuster(Integer.toString(seekbar_tilt_adjuster_value));
setText_kP_adjuster(Integer.toString(seekbar_kP_adjuster_value));
setText_kI_adjuster(Integer.toString(seekbar_kI_adjuster_value));
setText_kD_adjuster(Integer.toString(seekbar_kD_adjuster_value));
setText_current_angle(Integer.toString(currentAngle));
setText_tilt_adjuster(Integer.toString(PID));
setText_kP_adjuster(Integer.toString(P));
setText_kI_adjuster(Integer.toString(I));
setText_kD_adjuster(Integer.toString(D));
}
openbare nietige disconnected() {}
enableUi(false);
}
}
beschermde IOIOLooper createIOIOLooper() {}
retourneren van nieuwe Looper();
}
private void enableUi (laatste Booleaanse inschakelen) {}
runOnUiThread (nieuwe Runnable() {}
openbare nietige run() {}
}
});
}
private void setText_current_angle (laatste String str) {}
runOnUiThread (nieuwe Runnable() {}
openbare nietige run() {}
textView_Current_Angle.setText(str);
}
});
}
private void setText_tilt_adjuster (laatste String str) {}
runOnUiThread (nieuwe Runnable() {}
openbare nietige run() {}
textView_Tilt_adjuster.setText(str);
}
});
}
private void setText_kP_adjuster (laatste String str) {}
runOnUiThread (nieuwe Runnable() {}
openbare nietige run() {}
textView_kP_adjuster.setText(str);
}
});
}
private void setText_kI_adjuster (laatste String str) {}
runOnUiThread (nieuwe Runnable() {}
openbare nietige run() {}
textView_kI_adjuster.setText(str);
}
});
}
private void setText_kD_adjuster (laatste String str) {}
runOnUiThread (nieuwe Runnable() {}
openbare nietige run() {}
textView_kD_adjuster.setText(str);
}
});
}
openbare nietige onSensorChanged (SensorEvent evenement)
{
if(Event.sensor.GetType()==sensor.TYPE_ROTATION_VECTOR)
{
SensorManager.getRotationMatrixFromVector(mRotationMatrix,event.values);
SensorManager.remapCoordinateSystem (mRotationMatrix,SensorManager.AXIS_X, SensorManager.AXIS_Z, mRotationMatrix);
SensorManager.getOrientation (mRotationMatrix, orientationVals);
orientationVals[1]=(float)Math.toDegrees(orientationVals[1]);
seekBar_kD_adjuster.setProgress(Math.round((orientationVals[1]*4)+500));
}
}
openbare nietige onAccuracyChanged (Sensor sensor, int nauwkeurigheid) {}
}
beschermd nietig onResume() {}
super.onResume();
deze klasse registreren als een listener voor de oriëntatie en
versnellingsmeter sensoren
mSensorManager.registerListener (dit,
mRotVectSensor,
10000);
mController.onResume();
mPlayer.mConnection = mController.getState(Controller.STATE_CONNECTION);
mPlayer.mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION); Controller-versie krijgen
mPlayer.mButtonA = mController.getKeyCode(Controller.KEYCODE_BUTTON_A);
mPlayer.mButtonB = mController.getKeyCode(Controller.KEYCODE_BUTTON_B);
mPlayer.mButtonX = mController.getKeyCode(Controller.KEYCODE_BUTTON_X);
mPlayer.mButtonY = mController.getKeyCode(Controller.KEYCODE_BUTTON_Y);
mPlayer.DpadUp = mController.getKeyCode(Controller.KEYCODE_DPAD_UP);
mPlayer.DpadDown = mController.getKeyCode(Controller.KEYCODE_DPAD_DOWN);
mPlayer.DpadLeft = mController.getKeyCode(Controller.KEYCODE_DPAD_LEFT);
mPlayer.DpadRight = mController.getKeyCode(Controller.KEYCODE_DPAD_RIGHT);
mPlayer.mAxisY = mController.getAxisValue(Controller.AXIS_Y);
mPlayer.mAxisRZ = mController.getAxisValue(Controller.AXIS_RZ);
}
beschermd nietig onPause() {}
Unregister luisteraar
super.onPause();
mSensorManager.unregisterListener(this);
mController.onPause();
}
beschermd nietig onDestroy() {}
mController.exit();
super.onDestroy();
}
}
// ----------------- ROBOT DIAGRAM ----------------------------- //
//
// _________
// | Front |
// | Geconfronteerd met |
// | Telefoon |
// ----------
// | |
// =========
LeftArm = 13 || ===| |===|| RightArm = 12
// || ===| |===||
// || | | ||
// || | | ||
// | |
// | |
// || | | ||
LeftWheel = 10 || =============|| RightWheel = 11
// || ||
//
//