so this is the working combined code?
HazardsMind:
/*
Simple motor control with square limit joystick
Y(1023)
|---------|
|---------|
X(0)|---512---|X(1023)
|---------|
|---------|
Y(0)
Left Motor Forward/Reverse = LMF/LMR
Right Motor Forward/Reverse = RMF/RMR
*/
const byte LMF = 3;
const byte LMR = 5;
const byte RMF = 6;
const byte RMR = 9;
const byte Xpot = A0;
const byte Ypot = A1;
volatile unsigned int X = 512, Y = 512; // pot values default 512 for center
unsigned int Xspeed = 0, Yspeed = 0; //motor speed default 0 for full stop
const int Xdeadzone = 5, Ydeadzone = 5; //amount of slack needed for pot values
void setup(){
pinMode(LMF, OUTPUT);
pinMode(LMR, OUTPUT);
pinMode(RMF, OUTPUT);
pinMode(RMR, OUTPUT);
Serial.begin(9600);
}
void loop()
{
X = analogRead(Xpot);
Y = analogRead(Ypot);
if (X >= (512 + Xdeadzone))//Forward
{
Xspeed = (X - 512) / 2; // 0 - 255
if(Y > (512 + Ydeadzone)) //Left
{
Yspeed = (Y - 512) / 2;
analogWrite(LMF, Xspeed - Yspeed); analogWrite(RMF, Xspeed);
//digitalWrite(LMR, LOW); digitalWrite(RMR, LOW);
}
else if (Y < (512 - Ydeadzone)) //Right
{
Yspeed = (512 - Y) / 2;
analogWrite(LMF, Xspeed); analogWrite(RMF, Xspeed - Yspeed);
//digitalWrite(LMR, LOW); digitalWrite(RMR, LOW);
}
else
{
analogWrite(LMF, Xspeed); analogWrite(RMF, Xspeed);
//digitalWrite(LMR, LOW); digitalWrite(RMR, LOW);
}
}
else if (X <= (512 - Xdeadzone))//Reverse
{
Xspeed = (512 - X) / 2;
if(Y > (512 + Ydeadzone)) //Left
{
Yspeed = (Y - 512) / 2;
//digitalWrite(LMF, LOW); digitalWrite(RMF, LOW);
analogWrite(LMR, Xspeed - Yspeed); analogWrite(RMR, Xspeed);
}
else if (Y < (512 - Ydeadzone)) //Right
{
Yspeed = (512 - Y) / 2;
//digitalWrite(LMF, LOW); digitalWrite(RMF, LOW);
analogWrite(LMR, Xspeed); analogWrite(RMR, Xspeed - Yspeed);
}
else
{
//digitalWrite(LMF, LOW); digitalWrite(RMF, LOW);
analogWrite(LMR, Xspeed); analogWrite(RMR, Xspeed);
}
}
else // X is between 512 +- deadzone
{
if(Y > (512 + Ydeadzone)) // zero point turn Left
{
digitalWrite(LMF, LOW); analogWrite(RMF, Yspeed);
//digitalWrite(LMR, LOW); digitalWrite(RMR, LOW);
}
else if(Y < (512 - Ydeadzone))// zero point turn Right
{
analogWrite(LMF, Yspeed); digitalWrite(RMF, LOW);
//digitalWrite(LMR, LOW); digitalWrite(RMR, LOW);
}
else
{ // Full stop
digitalWrite(LMF,LOW);
digitalWrite(RMF,LOW);
digitalWrite(LMR,LOW);
digitalWrite(RMR,LOW);
}
}
}