Étape 12 : Code de Main...
Voici le code principal... Je peux envoyer un fichier ZIP avec l’ensemble du projet Java sur demande... s’il vous plaît envoyer à joebotics
CODE DE LA MAIN :
package ioio.examples.simple ;
LOI SUR L’ÉQUILIBRE 4 + MOGA 2
Import ioio.lib.api.PwmOutput ;
Import ioio.lib.api.exception.ConnectionLostException ;
Import ioio.lib.util.BaseIOIOLooper ;
Import ioio.lib.util.IOIOLooper ;
Import ioio.lib.util.android.IOIOActivity ;
Import android.os.Bundle ;
Import android.widget.TextView ;
Import android.hardware.Sensor ;
Import android.hardware.SensorEvent ;
Import android.hardware.SensorEventListener ;
Import android.hardware.SensorManager ;
Import android.widget.SeekBar ;
import com.bda.controller.Controller ;
import com.bda.controller.ControllerListener ;
import com.bda.controller.KeyEvent ;
import com.bda.controller.MotionEvent ;
import com.bda.controller.StateEvent ;
public class Qu'ioiosimpleapp étend IOIOActivity implémente SensorEventListener {}
privé SensorManager mSensorManager ;
mRotVectSensor privé de capteur ;
Private float [] orientationVals = new Char [3] ;
Private float [] mRotationMatrix = new Char [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 ;
seekBar_Tilt_adjuster privé de SeekBar ;
seekBar_kP_adjuster privé de SeekBar ;
seekBar_kI_adjuster privé de SeekBar ;
seekBar_kD_adjuster privé de SeekBar ;
Contrôleur mController = null ;
final ExampleControllerListener mListener = new ExampleControllerListener() ;
final ExamplePlayer mPlayer = new ExamplePlayer (0.0F, 1.0F, 0.0F) ;
{} public void onCreate (Bundle savedInstanceState)
mController = Controller.getInstance(this) ;
mController.init() ;
mController.setListener (mListener, null) ;
super.onCreate(savedInstanceState) ;
setContentView(R.layout.main) ;
mSensorManager = getSystemService(SENSOR_SERVICE) (SensorManager) ;
mRotVectSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) ;
textView_Current_Angle = findViewById(R.id.TextView_CurrentAngle_Value) (TextView) ;
textView_Tilt_adjuster = findViewById(R.id.TextView_Tilt_adjusterValue) (TextView) ;
seekBar_Tilt_adjuster = findViewById(R.id.SeekBar_Tilt_adjuster) (SeekBar) ;
textView_kP_adjuster = findViewById(R.id.TextView_kP_adjusterValue) (TextView) ;
seekBar_kP_adjuster = findViewById(R.id.SeekBar_kP_adjuster) (SeekBar) ;
textView_kI_adjuster = findViewById(R.id.TextView_kI_adjusterValue) (TextView) ;
seekBar_kI_adjuster = findViewById(R.id.SeekBar_kI_adjuster) (SeekBar) ;
textView_kD_adjuster = findViewById(R.id.TextView_kD_adjusterValue) (TextView) ;
seekBar_kD_adjuster = findViewById(R.id.SeekBar_kD_adjuster) (SeekBar) ;
seekBar_Tilt_adjuster.setProgress(500) ;
seekBar_kP_adjuster.setProgress(0) ;
seekBar_kI_adjuster.setProgress(0) ;
seekBar_kD_adjuster.setProgress(0) ;
enableUi(false) ;
}
/ public class ExampleControllerListener implements ControllerListener {}
{} public void onKeyEvent (KeyEvent event)
commutateur (event.getKeyCode()) {}
affaire KeyEvent.KEYCODE_BUTTON_X :
seekBar_Tilt_adjuster.setProgress(seekBar_Tilt_adjuster.getProgress() - 2) ;
rupture ;
affaire KeyEvent.KEYCODE_BUTTON_B :
seekBar_Tilt_adjuster.setProgress(seekBar_Tilt_adjuster.getProgress() + 2) ;
rupture ;
affaire KeyEvent.KEYCODE_BUTTON_Y :
seekBar_kP_adjuster.setProgress(seekBar_kP_adjuster.getProgress() + 2) ;
rupture ;
affaire KeyEvent.KEYCODE_BUTTON_A :
seekBar_kP_adjuster.setProgress(seekBar_kP_adjuster.getProgress() - 2) ;
rupture ;
affaire KeyEvent.KEYCODE_DPAD_UP :
seekBar_kI_adjuster.setProgress(seekBar_kI_adjuster.getProgress() + 2) ;
rupture ;
affaire KeyEvent.KEYCODE_DPAD_DOWN :
seekBar_kI_adjuster.setProgress(seekBar_kI_adjuster.getProgress() - 2) ;
rupture ;
affaire KeyEvent.KEYCODE_DPAD_RIGHT :
seekBar_kD_adjuster.setProgress(seekBar_kD_adjuster.getProgress() + 2) ;
rupture ;
affaire KeyEvent.KEYCODE_DPAD_LEFT :
seekBar_kD_adjuster.setProgress(seekBar_kD_adjuster.getProgress() - 2) ;
rupture ;
}
}
{} public void onMotionEvent (MotionEvent event)
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) ;
}
{} public void onStateEvent (événement actuelnotification)
commutateur (event.getState()) {}
affaire StateEvent.STATE_CONNECTION :
mPlayer.mConnection = event.getAction() ;
rupture ;
}
}
}
public class ExamplePlayer {}
public static final float DEFAULT_SCALE = 4.0f ;
public static final float DEFAULT_X = 0.0f ;
public static final float DEFAULT_Y = 0.0f ;
gotPadVersion booléenne = 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 ;
public float mAxisX = 0.0f ;
public float mAxisY = 0.0f ;
public float mAxisZ = 0.0f ;
public float mAxisRZ = 0.0f ;
finale flotter Monsieur ;
flotteur finale mG ;
flotteur final Mo ;
float mScale = DEFAULT_SCALE ;
flotteur mX = DEFAULT_X ;
flotteur ma = DEFAULT_Y ;
public ExamplePlayer (float r, float g, float b) {}
M. = r ;
mG = g ;
Mo = b ;
}
}
SerializableAttribute public class Looper extends BaseIOIOLooper {}
Private PwmOutput LeftWheel ;
Private PwmOutput RightWheel ;
Private PwmOutput LeftArm ;
Private 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() lève {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() lève 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 ;
J’ai = (seekbar_kI_adjuster_value * I_delta) / 4000 ;
D = (seekbar_kD_adjuster_value * D_delta) / 4000 ;
Si (j’ai < -100) {}
J’ai = -100 ;
} ElseIf (j’ai > 100) {}
J’ai = 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)) ;
}
public void disconnected() {}
enableUi(false) ;
}
}
protected IOIOLooper createIOIOLooper() {}
retour de nouveau Looper() ;
}
Private Sub enableUi (final boolean enable) {}
runOnUiThread (new Runnable() {}
public void run() {}
}
});
}
{} private void setText_current_angle (final String str)
runOnUiThread (new Runnable() {}
public void run() {}
textView_Current_Angle.setText(str) ;
}
});
}
{} private void setText_tilt_adjuster (final String str)
runOnUiThread (new Runnable() {}
public void run() {}
textView_Tilt_adjuster.setText(str) ;
}
});
}
{} private void setText_kP_adjuster (final String str)
runOnUiThread (new Runnable() {}
public void run() {}
textView_kP_adjuster.setText(str) ;
}
});
}
{} private void setText_kI_adjuster (final String str)
runOnUiThread (new Runnable() {}
public void run() {}
textView_kI_adjuster.setText(str) ;
}
});
}
{} private void setText_kD_adjuster (final String str)
runOnUiThread (new Runnable() {}
public void run() {}
textView_kD_adjuster.setText(str) ;
}
});
}
public void onSensorChanged (événement SensorEvent)
{
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)) ;
}
}
' Public Sub onAccuracyChanged (capteur, précision int) {}
}
protected void onResume() {}
super.onResume() ;
enregistrer cette classe comme un écouteur pour l’orientation et
capteurs accéléromètre
mSensorManager.registerListener (this,
mRotVectSensor,
10000) ;
mController.onResume() ;
mPlayer.mConnection = mController.getState(Controller.STATE_CONNECTION) ;
mPlayer.mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION) ; Téléchargez la version de contrôleur
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) ;
}
protected void onPause() {}
annuler l’enregistrement d’auditeur
super.onPause() ;
mSensorManager.unregisterListener(this) ;
mController.onPause() ;
}
protected void onDestroy() {}
mController.exit() ;
super.onDestroy() ;
}
}
// ----------------- ROBOT DIAGRAM ----------------------------- //
//
// _________
// | Avant |
// | Face |
// | Téléphone |
// ----------
// | |
// =========
LeftArm = 13 || ===| |===|| RightArm = 12
// || ===| |===||
// || | | ||
// || | | ||
// | |
// | |
// || | | ||
LeftWheel = 10 || =============|| RightWheel = 11
// || ||
//
//